유니티에서의 물리엔진 이동 메소드 - Rigidbody

Published: Dec 23, 2020 by BeatChoi

유니티에서의 물리엔진을 활용한 이동 해보기

유니티에서 Rigidbody컴포넌트를 활용한 이동 메소드 및 변수들를 알아봅니다.

유니티3D 에디터에서

Velocity

프로젝트창에서 Velocity스크립트를 생성합니다.


<01. Physics 스크립트 생성>

Physics 스크립트를 열어서 다음과 같이 작성합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Velocity : MonoBehaviour
{
    Rigidbody rb; // Rigidbody형으로 rb 변수를 선언해줍니다.
    public float speed; //속도 변수를 선언합니다.  
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>(); //스크립트가 인스턴스화된 오브젝트의 Rigidbody 컴포넌트를 불러옵니다.
    }

    // Update is called once per frame
    void Update()
    {
        rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y, speed); // 오브젝트의 Rigidbody 접근하여 Velocity 변수를 사용합니다.
    }
}
  • Velocity 변수는 Rigidbody 컴포넌트가 있어야 호출을 할 수 있습니다.
  • Velocity 변수는 Rigidbody를 가진 물체에 주어진 속도를 부여합니다.

오브젝트 설정

에디터로 돌아와서 Physics스크립트를 Sphere오브젝트에 인스턴스화를 시킵니다.


<02. Physics 스크립트 인스턴스화>

Sphere 오브젝트의 인스펙터 창에서 Rigidbody컴포넌트를 생성합니다.


<03. Rigidbody 컴포넌트 추가>

Sphere 오브젝트에 인스턴스화 되어있는 Physics스크립트의 Speed값을 10으로 변경해줍니다.


<04. Speed 값 변경>

테스트

에디터 상단 플레이버튼을 눌러서 확인을 해봅니다.


<05. Sphere 오브젝트의 이동 확인>

위 결과에서 보았듯이 Velocity는 물체에 특정 속도값을 부여하여 일정한 속도로 움직일 수 있도록 합니다.

Addforce

이번엔 Physics스크립트에 다음과 같이 작성해 봅니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Velocity : MonoBehaviour
{
    Rigidbody rb;
    public float speed;
    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        //rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y, speed);
        rb.AddForce(new Vector3(0, 0, speed*0.1f));
    }
}
  • Addforce 메소드는 Rigidbody를 가지고 있는 오브젝트에 일정한 힘을 지속적으로 부여합니다.
  • 메소드 안에 들어가는 인자는 Vector3 형식이기 때문에 방향과 힘 모두 부여할 수 있습니다.

테스트

Sphere오브젝트에 스크립트가 인스턴스화가 되어있는지 확인한 후 상단 Play 버튼을 눌러 확인해봅니다.


<06. Sphere 오브젝트의 이동 확인>

비교

Velocity

Velocity는 일정한 속도를 오브젝트에 부여하기 때문에 일정한 속도로 이동하게 됩니다.
하지만 Addforce메소드의 경우 일정한 을 오브젝트에 지속적으로 부여하기 때문에
속도는 일정하게 증가하는 것을 확인할 수 있습니다.

Latest Posts

콘텐츠 개발 기법 - URP 환경에서 Bloom 및 Volume 포함한 화면 캡처
콘텐츠 개발 기법 - URP 환경에서 Bloom 및 Volume 포함한 화면 캡처

화면 캡처 :: Screen Capture

일반적으로 URP환경에서 Bloom 등의 Volume 이펙트들이 함께 캡처되지 않는 현상이 일어납니다.
두가지 원인이 있는데 첫번째는 저장할 Texture 및 Texture2D의 크기가 작아 모든 텍스쳐를 저장할 수 없는 경우와
두번째는 Linear color space의 픽셀을 텍스쳐에 저장 할 수 없는 경우가 있습니다.
이번 포스팅에서는 URP 환경에서 해당 이펙트들을 함께 캡쳐하는 방법을 알아봅니다.

콘텐츠 개발 기법 - UI 안나오게 화면 캡처(Screen Capture without UI)
콘텐츠 개발 기법 - UI 안나오게 화면 캡처(Screen Capture without UI)

화면 캡처 :: Screen Capture

UI 없이 화면을 캡쳐하는 방법을 알아봅니다.
해당 방법을 통해 사진 앱에서 사진을 찍거나 게임 내에서 UI를 제거한 스크린샷을 구현할 수 있습니다.

유니티3D 에디터에서

스크립트 작성

LightshipAR SDK 활용하기 - LightshipAR VPS의 활용
LightshipAR SDK 활용하기 - LightshipAR VPS의 활용

LightshipAR SDK

이번 강좌에서는 Visual Positioning System (VPS) 기능을 활용하여 콘텐츠를 개발해 봅니다.
VPS는 GPS정보와 타겟 매핑 정보를 정합하여 해당 타겟을 인식하는 기능입니다.
따라서 객체나 환경의 변화 및 이동이 잦지 않은 타겟이 스캔 대상이 됩니다.
주로 동상, 건물 입구, 가로등 등 위치의 변경이 없는 타겟들이 좋은 타겟입니다.

해당 타겟들을 인식시키고 주변에 가상의 오브젝트들을 배치하고 해당 위치를 저장하는 방법을 알아봅니다.

공간 매핑

Niantic Wayfarer

공간을 인식시키기 위해서 먼저 공간을 매핑해야 합니다.
이 과정은 IOS 어플리케이션으로 진행을 할 수 있는데 아래 링크에서

  1. Testflight
  2. Wayfarer

어플리케이션을 다운로드 및 설치합니다.

링크 : https://testflight.apple.com/join/VXu1F2jf