핸들과 바퀴가 자연스럽게 돌아가게 하려면 어떻게 해야할까 고민해보았다. 자동차는 한번에 각도를 바꾸는게 아니라, Quaternion의 Slerp에 의해 천천히 회전하게 되므로, 자신의 예전각도와 현재각도의 차이를 계산하면 핸들이 어느정도로 틀어져야 하는지 알 수 있다.

방식

먼저, 자동차와 정확히 같은 Rotation을 공유하는 Vehicle Arrow를 만든다.

그 다음, 자동차보다 느리게 회전하는 Wheel Arrow를 만든다.

그리고 이 두 화살표의 각도 차이만큼

핸들을 z축으로, 바퀴들을 y축으로 회전한다.

image

바퀴의 회전

핸들은 두 화살표의 차이만큼만 z축으로 회전하면 되지만,

바퀴는 굴러가야 하기 때문에 y축으로도 회전해야 한다.

image

따라서 다음과 같은 코드를 추가한다.

image

속력은 Target ( 자동차 )의 Velocity를 크기만 받아와 참고한다.


주행 테스트

바퀴 꺾임 & 주행 테스트

아래는 방향에 따라 바퀴가 꺾이는 모습을 촬영한 것이다. 굴러도 가면서 커브시 회전한다.

01


바퀴 꺾임 & 주행 테스트 확대

잘 안보여서 확대샷을 촬영하였다.

잘 안보이지만 확인해보면 원하는 방향대로 돌아간다.

또, 바퀴가 뒤로 가는 것 처럼 보이지만 GIF로 변환하면서 생긴 에일리어싱 현상이다.

실제로 보면 잘 돌아간다.

02


핸들 꺾임 테스트

핸들을 촬영한 모습.

조명이 어두우면 안보여서 조명을 추가하였다.

03


핸들 꺾임 테스트 (확대)

역시 잘 안보여서 확대해 촬영하였다.

04



추가

바퀴의 회전을 알 수 있도록 스크롤 UI로 자동차의 속력을 제어할 수 있게 하였다.

00




How to Merge

1 . Asset > Prefab > PATH_GENERATOR 를 Scene으로 불러온다.

image

2 . 불러온 PATH_GENERATOR를 클릭하고, Inspector 창에서 다음과 같이 조절한다.

image

  • 0번 . transform을 (0,0,0) / (0,0,0) / (1,1,1) 로 맞춘다.
  • 1번 . 자동차를 넣는다. (Vehicle_LOD0)
  • 2번 . 디버그 모드를 보고싶으면 체크한다. 아니면 해제하면 된다.
  • 3번 . 자동차의 핸들을 넣는다. (Vehicle_LOD0 > Steering Wheel_LOD0)
  • 4번 . 자동차의 바퀴들을 넣어준다. [0][1]은 앞바퀴, [2][3]은 뒷바퀴. (WheelFront … ~ WheelRear)

테스트 하면 된다.