Unity CharacterController Move / SimpleMove 차이

 

 

유니티에서 벽을 지나갈 수 없게 캐릭터를 이동시키는 방법은

 

1) rigidbody + Collider를 붙이고 rigidbody.MovePosition을 사용

2) CharacterController를 붙이고 Move 또는 SimpleMove를 사용

 

크게 두 가지의 방법이 있다.

1)은 완전한 물리처리로 이동하기 때문에 잘 비비면 얇은 벽은 들어갈 수 있는 버그도 생기기 때문에

레이캐스트를 발사해서 이동속도를 차단하는 등의 부가처리가 필요하다.

 

2)는 softSkin등의 기능들이 달려있어서 경사등을 부드럽게 올라갈 수 있다. 간단하게 구현가능.

CharacterController는 콜리더의 기능도 같이 달려있기 때문에, 별도의 콜리더를 달아줄 필요가 없다.

 

 

Move

- 인자는 float (방향 x 속도 x deltaTime를 곱해서 넘겨주자)

- 중력을 받지않는다! 때문에 중력은 수동으로 속도에 곱해줘야한다.

 

SimpleMove

- 인자는 float (방향 x 속도를 곱해서 넘겨주자)

- 지면방향 움직임만 설정하면 중력은 자동으로 계산된다.

 

 

가장 큰 차이는 deltaTime을 넘겨주지 않는 것과, 중력 값이 자동으로 계산되느냐의 차이다.

 

 

 

댓글

Designed by JB FACTORY