본문 바로가기
PROGRAMING📚/Unity📑

[UNITY]휠 콜라이더(Wheel Collider) 사용해서 차량 만들기(1)

별찌루 2023. 7. 25.
728x90
반응형

휠 콜라이더(Wheel Collider) 사용해서 차량 만들기


최근에 카트를 만들어야하는 일이 생겨서 다양한 컨트롤 방법을 사용했으나

 

다음과 같이 키보드의 입력으로 Vector3(x값,0,y값) 왼쪽,오른쪽으로 이동하는 것까지는 괜찮으나

 

캐릭터가 90도 회전을 했을 때 x와 z의 축이 달라지면서

회전을 했을 경우에는 기존에 x값을 z에 넣어주어야지 정상적으로 움직임이 가능한 상황이 되어버렸다..

 

 

그래서 다양한 방법을 사용 해 보아도 마음대로 잘되지 않았는데

친구가 Wheel Collider에 대해서 알려줬다

콜라이더를 사용하더라도 보통 box,capsul,spheer 콜라이더를 보통 사용하기 때문에 존재를 모르고있었다

그래서 이번에는 Wheel Collider를 사용해서 구현을 해보았다

 


휠 콜라이더(Wheel Collider)

 

휠 콜라이더는 지상 차량용 특수 콜라이더 라고 한다.

휠이 아닌 오브젝트에도 적용기 가능하지만 차량용으로 설계가 되어있다.

 

 

 

휠 콜라이더 - Unity 매뉴얼

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

docs.unity3d.com

 

Wheel Collider 컴포넌트의 속성에는 다음과 같은 기능이 있다.

 

Mass  휠의 질량
Radius 휠의 반지름
Wheel Damping Rate 휠에 적용되는 감쇠(운동의 속도, 가속도를 감소시키는)값,마찰을 받는 정도 라고 생각하면 될 듯
Suspension Distance 휠에서의 거리를 조절 할 수 있게 도와줌
값이 늘어 날 수록 Y축 아래로 확장된다.



Suspension Distance:0.3 / Suspension Distance:0 /  Suspension Distance:0.5
Force App Point Distance 메뉴얼에는 [이 파라미터는 휠의 힘이 적용되는 지점을 정의합니다.
이것은 서스펜션 주행 방향을 따라 정지 포지션에서 휠의 베이스로부터 미터 단위로 예상됩니다.
 
forceAppPointDistance = 0
일 때 힘은 나머지 휠 베이스에 적용됩니다.
차량의 질량 중심 약간 아래에 힘이 작용하면 더 좋은 차량이 됩니다.]
라고 적혀있는데
휠 힘이 작용하는 지점이라고 생각하면 될 거 같다



값에 따라서 동그라미(힘 점)가 움직인다 
Center Suspension Distance는 휠의 중심의 거리에서 0~ 숫자가 올라갈수록 Y축 아래로 이동하였으면 Center는 그에 상관없이 휠을 중심을 x,y,z 원하는 위치로 조절이 가능하다.
Suspention Spring 받침대는 스프링과 줄이기(damping) 힘들을 추가해서 목표 위치(Target Position)에 이르도록 시도합니다.
Damper 서스펜션 속도를 줄입니다. 값이 높을수록 Suspension Spring 의 움직임이 더욱 느려집니다.
Target Position 서스펜션 거리를 따른 서스펜션의 남은 거리입니다.
1은 완전히 확장된 서스펜션을 매핑하고 0은 완전히 압축된 서스펜션을 매핑합니다.
기본값은 0.5로 보통 차량 서스펜션의 동작과 일치합니다.
Forward/Sideways Friction 휠이 앞과 옆으로 구를 때 타이어 마찰 관련 프로퍼티

 

휠 콜라이더는 오브젝트를 돌리거나 굴려서는 안되기 때문에

오브젝트들을 Static으로 설정되어 있거나 고정되어있어야한다.

모델링을 회전 시키고 싶은 경우,

모델링 디자인과 Wheel Collder 그룹을 따로 구분해서 설정해주는게 좋다.


 

이제 차량이 길을 뚷고 다니지 않게 Player 안에

Rigidbody와 BoxColider 컴포넌트를 넣어주고

콜라이더의 위치를 조정해줬다.

 

 

이렇게 휠 콜라이더를 넣어서 만들어주면

Player 오브젝트가 하늘로 막 날라다니는 것을 볼 수있다.

 

그 이유는 Wheel Collider 안에 Suspension Spring의 Spring값이 35000을 기본값으로 가지고 있는데

스프링 힘이 강해서 튕켜서 올라간다고 생각하면된다.

그래서 Spring값을 낮추는 사람들도 있고 나 같은 경우 Player 안에

Rigidbody와 BoxCollider를 넣어주었다

그리고 Rigidbody의 Mass 값을 1500정도 까지 높여주니 날라가지 않았다.

728x90
반응형

댓글