Programing/Unity(C#)

[Unity] 게임 오브젝트 이동 방법(transform, rigidbody)

hye3193 2024. 3. 5. 18:32

transform

1. transform.position

transform.position += Vector3.up * moveSpeed * Time.deltaTime;

- position 자체를 이동시키는 방식

* Vector3의 정적 변수를 사용하면 편하다

 

2. transform.Translate()

transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);

- 전달하는 인자의 크기만큼 현재 위치에서 이동시키는 방식

 

Rigidbody

transform을 이용하는 방식에 비해 좀 더 사실적이고 부드러운 움직임을 표현할 수 있다

 

1. AddForce()

rb.AddForce(Vector2.up * power);

- 특정 벡터만큼의 힘을 가하는 방식

- 관성이 적용된다

- 마지막 인자로 Force Mode를 설정할 수 있는데 사용 가능한 모드는 아래와 같다

 

2. Velocity

float x = Input.GetAxis("Horizontal");
float y = Input.GetAxis("Vertical");

Vector2 vel = new Vector2(x, y);
rb.velocity = vel.normalize * moveSpeed * Time.deltaTime;

- rigidbody의 velocity값을 조절해주는 방식

- Vector2의 정적 변수를 이용해도 되나, velocity를 zero로 초기화해주는 작업이 필요하다

* 방향 벡터를 정규화(normalize)해주는 과정을 거쳐야 어느 방향이든 벡터의 크기가 일정해진다