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)해주는 과정을 거쳐야 어느 방향이든 벡터의 크기가 일정해진다