유니티에서 제공하는 컨트롤러 두 가지가 있다
캐릭터 컨트롤러(Character Controller) 와 리지드바디(Rigidbody)이다.
이 둘은 이름에서 알 수 유추할 수 있듯이 각각 캐릭터 조작과 게임 오브젝트의 물리를 담당한다.
캐릭터를 움직이게 하는 것과 경사면 등을 이동할 때 등의 움직임 관련 조작을 할 수 있는 캐릭터 컨트롤러
부착한 오브젝트의 물리적인 움직임을 해주는 리지드 바디
이 둘의 기능을 합쳐서 훌륭한 게임 오브젝트를 만들 수 있을 것만 같다. 그러나 그렇지만도 않은게
이 둘이 같이 붙어진 게임 오브젝트는 각각의 컴포넌트 (캐릭터 컨트롤러와 리지드바디)가 전부 활성화된 상태에서 물리적인 힘을 부여할 경우 아무런 일이 일어나지 않는다.
즉, 리지드바디의 내장 메소드인 AddForce를 그 어떤 것을 실행해도 해당 오브젝트는 꼼짝도 안한다. 이를 적용하기 위해선 AddForce 함수를 사용하는 등에 리지드바디를 통한 물리적인 힘을 가해야 하는 경우 캐릭터 컨트롤러를 일시적으로 비활성화 해야한다.
혹은 둘 중 하나를 포기하고 사용해야 한다. 공중에 있을 때 오브젝트가 중력 영향을 받는 듯한 연출이 필요하다면 캐릭터컨트롤러의 Move 함수를 이용하여 내려오게 하거나 리지드바디의 usegravity 프로퍼티를 이용하여 중력을 적용하는 등을 이용해야 할 것이다.
물리적인 액션을 취할 때 제대로 동작이 안된다면 이 둘의 컴포넌트가 동시에 있는지 확인해볼 수 있겠다.
'개발 > Unity' 카테고리의 다른 글
Input System 적용하기 (0) | 2024.06.25 |
---|---|
Material과 Shared Material 차이 (0) | 2024.06.18 |
BRP 에서 URP 적용하기 (0) | 2024.06.11 |
0510 Mosnter Pattern - 적 ->플레이어 공격 및 게임 종료 (0) | 2024.05.10 |
0509 Monster Pattern (0) | 2024.05.09 |