K-digital traning/Final Project

Gazzlers 개발일지 - wheel collider

내꺼블로그 2023. 12. 7. 10:16

https://coding-of-today.tistory.com/128

 

[레이싱게임] 휠 콜라이더(Wheel collider) 기본 세팅하기

레이싱게임이나 휠콜라이더를 다루기 위해서는 첫번째로, 차량 오브젝트에 휠콜라이더를 배치해야한다. 매우 기본적이지만 첫걸음을 잘 내딛어야 이후의 과정들이 매끄러워지므로 집중하도록

coding-of-today.tistory.com

 

 

https://docs.unity3d.com/kr/current/Manual/class-WheelCollider.html

 

휠 콜라이더 - Unity 매뉴얼

휠 콜라이더(Wheel Collider) 는 지상 차량용 특수 콜라이더입니다. 충돌 검사, 휠 물리 효과 및 슬립 기반 타이어 마찰 모델이 포함되어 있습니다. 휠이 아닌 오브젝트에도 사용이 가능하지만, 휠이

docs.unity3d.com

 

본 포스팅은 위의 글들을 토대로 작성되었습니댯

 

 

 

 

 

 

바퀴에 wheel collider 달기

 

 

 

차량의 자식으로 WheelCollider 빈오브젝트 만들기

 

 

 

 

 

Wheel Collider 컴포넌트 붙이기(위치는 기존 wheel의 position으로 세팅)

 

 

 

 

 

 

 

enemy rigidbody에서 무게도 빡시게 줘버리기(700)

 

 

 

 

 

 

콜라이더 작동은 하는데 적들이 겁나게 멀어지는즁,,,,,,

기존 Enemy1Move 스크립트를 대거 수정해야 될 필요가 보인댜,,

 

 

 

 

 

 

enemy의 자식에 붙어있는 wheelcollider들을 순회하면서 motorTorque 즉 앞으로 구르는 힘(?)을 moveSpeed만큼 부여함.

바퀴는 앞바퀴만이 좌우로 회전을 하므로 앞바퀴인 경우에만 LookRotation(moveDir).y값만큼 steerAngle을 부여.(y축 기준으로 회전값을 줌.)

 

 

 

 

개판 오분전, 수정 요망

 

 

 

 

LookRotation(moveDir).y값을 로그로 찍어보니 값이 엉망진창임을 확인하고 다른 접근을 해봄.

enemy가 target을 향해 방향을 전환하도록 할 것이기 때문에 target의 position.x값과 enemy의 position.x값의 차이를 이용해보려함.

이용해본 결과 위의 결과보다는 괜찮았으나 회전이 많이 될수록 enemy 상태가 위와 다를바 없어짐.

이를 나름 해결해보고 싶어서 wheelcollider의 friction 값을 조절하면서 진행해본 결과 조절 전보다는 괜찮은 결과를 얻었으나 아직도 enemy의 움직임이 이상함.

왜일까를 생각해보니 enemy의 위치 및 회전 상태와 별개로 wheelcollider의 방향이 다를 수 있다는 것을 깨달음.

그러나 wheelCollider는 따로 collider 자체가 현재 어느 방향인지에 대해서는 알 수 없음.(collider의 gameObject의 rotation값을 보아도 (0,0,0)에서 벗어나지 않음. unity에서 제공해주는 기능을 사용해서 접근해야 할 것 같은데 딱히 그런건 없어보였다.... 조사부족일 수 있다만,,,)

 

 

 

 

 

 

결론 : 내 실력으로는 WheelCollider를 사용하여 구현하는 것은 무리가 있다,,,,,,,, 휠을 빼쟈,,,,,,ㅜㅜ