유니티 Wheel Collider란 무엇인가

조동하·2026년 9월 5일

유니티엔진

목록 보기
5/8
post-thumbnail

이번 글에서 다룰 내용들

  1. 유니티에서 Wheel Collider란 무엇인가?
  2. Wheel Collider를 활용한 예시
  3. Wheel Collider에 꼭 필요한 스크립트

유니티에서 Wheel Collider란 무엇인가?

유니티의 Wheel Collider 컴포넌트는 자동차, 오토바이 같은 차량의 "물리 시스템"을 쉽게 만들 수 있는 강력한 기능이다. 예를들어 자동차의 서스펜션, 바퀴, 마찰력 같은것들을 빠르게 구현해야 할 때 많이 쓰이는 기능이다. 컴포넌트를 추가하면 이런 모습이다.

사진과 같이 스프링 강도, 스피링이 돌아오는 정도부터 마찰력, 질량까지 꽤 섬세하게 조절할 수 있다. 단, 값을 너무 극단적으로 주면 자동차가 튀어 오르거나 바퀴가 부들부들 떠는등의 증상이 생길 수 있으니 유의하자.

Wheel Collider를 활용한 예시


이것은 글 작성자가 현재 제작하고 있는 Extrem 3D Car Driving 게임의 일부이다.
하이어라키 구조를 살펴보면 다음과 같은 형태로 구성되어 있다.
Car(빈 오브젝트) → Body(차체 전체) → Wheel Mesh(중요!) / Wheel Colliders(중요!)

여기서 Wheel Mesh와 Wheel Collider를 서로 분리하여 구성한 것이 중요한 부분이다.
Wheel Mesh는 플레이어의 화면에 실제로 보이는 바퀴의 3D 모델과 그래픽을 담당하고, Wheel Collider는 바퀴의 물리 연산, 지면과의 접촉, 마찰, 서스펜션 및 회전 등의 기능을 담당한다.
따라서 두 요소를 분리하면 시각적인 바퀴 모델과 물리적인 바퀴 시스템을 독립적으로 관리할 수 있다. 실제 게임에서는 Wheel Collider가 계산한 위치와 회전 정보를 Wheel Mesh에 적용하여, 물리적으로 움직이는 바퀴를 화면에서도 자연스럽게 표현한다.

또한 휠 콜라이더의 위치를 바퀴의 정 중앙에 맞추는 것이 좋다 (+ 휠 콜라이더의 반지름과 실제 메시의 반지름 크기를 맞추는것도 덤!)
만약 휠 콜라이더를 중앙에 배치하지 않으면 바퀴의 회전축, 스프링 위치또한 제대로 맞지 않게 되기 때문이다.
(위 사진처럼 자동차를 만들면 자동차가 아니라 미래형 호버보드가 될거 같다)

주의할점
만약 Wheel Collider를 활용한 자동차 게임을 제작할시, WheelMesh에 절대로 Rigidbody를 추가해서는 안 된다. 무조건 가장 높은 오브젝트 (사진상으로는 CAR오브젝트)에만 Rigidbody를 넣어야 한다.
또한 Body부분의 모든 자식 오브젝트들에는 Convex를 체크표시하는것을 적극 권장한다. 게임에 필요한 연산량을 확 줄여주는 중요한 기능이기 때문이다.

Wheel Collider에 꼭 필요한 스크립트

using UnityEngine;

public class CarController : MonoBehaviour
{
    public float motorPower = 1500f;
    public float brakePower = 3000f;
    public float maxSteerAngle = 30f;

    public WheelCollider frontLeftCollider;
    public WheelCollider frontRightCollider;
    public WheelCollider rearLeftCollider;
    public WheelCollider rearRightCollider;

    void FixedUpdate()
    {
        float motor = Input.GetAxis("Vertical") * motorPower;
        float steering = Input.GetAxis("Horizontal") * maxSteerAngle;

        // 조향
        frontLeftCollider.steerAngle = steering;
        frontRightCollider.steerAngle = steering;

        // 후륜 구동
        rearLeftCollider.motorTorque = motor;
        rearRightCollider.motorTorque = motor;
    }
}

위 스크립트와 같이 바퀴의 회전력 (보통 마력 토크라 불린다) 브레이크와 회전반경이 필수적으로 필요하다.
그리고 휠 콜라이더를 직접 회전시켜서 자동차가 앞으로 가기 때문에 위 코드 방식대로 오브젝트를 꼭 설정해줘야 한다.
그리고 WASD입력 (Vertical, Horizontal부분) 조향은 앞 바퀴가, 구동은 뒷 바퀴가 하는 구조이다.

보통 자동차 게임을 만들려고 하면 엄청 복잡할거 같지만 사실 그렇게까지 어렵지는 않다. Wheel Collider 덕분이라고 생각한다. 단순 바퀴가 굴러가는걸 위 코드처럼 엄청 쉽게 구현할 수 있기 때문이다.

profile
중학교 3학년 입니다. 열심히 해용!

0개의 댓글