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)해주는 과정을 거쳐야 어느 방향이든 벡터의 크기가 일정해진다
'Programing > Unity(C#)' 카테고리의 다른 글
[Unity] 모양이 유지되는 슬라이더(Slider) (0) | 2024.03.08 |
---|---|
[Unity] 오브젝트 위치를 Tilemap/GridLayout 칸에 맞추기 (0) | 2024.03.05 |
[Unity] 버튼 눌리는 이벤트(Pointer Down, Pointer Up) (0) | 2024.03.04 |
[C#] using static (정적 멤버 직접 사용) (0) | 2024.03.04 |
[Unity] 물리 충돌 시 떨림 현상 (0) | 2024.03.04 |