Unity 6 자동차 이동 구현 - Rigidbody와 입력 처리 및 카메라 추적 예제

Unity 6 자동차 이동 구현 – 입력 처리와 카메라 추적

Unity 6 자동차 이동 구현 예제 - Rigidbody를 활용한 차량 움직임과 입력 처리 및 카메라 추적 화면
Unity, Unity6, C#, 게임개발, Rigidbody, InputSystem, 카메라추적, Unity튜토리얼



이번에는 키보드 입력을 통해 자동차를 움직이고, 카메라가 이를 따라오며 장애물과 충돌하는 기능까지 구현해보았다.

아래 영상은 실제 실행 결과이다.




실습 목표

  • 키보드 입력(T, G, F, H)으로 자동차 이동
  • Rigidbody를 활용한 물리 적용
  • 카메라 Follow 기능 구현
  • 장애물 충돌 테스트

씬 구성

[Car]

  • Mesh: SK_Veh_Armor_Car_01
  • Mesh Collider
  • Rigidbody
  • Player Input
  • CarController 스크립트

[Road]

  • Box Collider

[장애물]

  • Crate_01 (Mesh Collider + Rigidbody)
  • Prop_Barrier02
  • SM_Rock_Bounder_01

장애물에도 Rigidbody를 적용하여 충돌 시 물리 반응이 발생하도록 설정하였다.


카메라 따라오기 (FollowCar)

using UnityEngine;

public class FollowCar : MonoBehaviour
{
    public Vector3 cam = new Vector3(0, 5, -10);
    public GameObject car;
    
    void LateUpdate()
    {
        transform.position = car.transform.position + cam;
    }
}

[설명]

cam : 카메라가 자동차를 따라갈 위치 오프셋 값
car : 따라갈 대상 오브젝트
LateUpdate() : Update 이후 실행되며, 카메라 추적에 가장 적합한 함수


자동차 이동 (CarController)

using UnityEngine;
using UnityEngine.InputSystem;

public class NewMonoBehaviourScript : MonoBehaviour
{
    int speed = 8;
    public float horizon_input;
    public float vertical_input;
    
    public Vector2 input_value;
    
    public float turnSpeed;
    
    void Update()
    {
        transform.Translate(Vector3.forward * Time.deltaTime * speed * vertical_input);
        transform.Rotate(Vector3.up, Time.deltaTime * turnSpeed * horizon_input);
    }
    
    void OnMove(InputValue value)
    {
        input_value = value.Get<Vector2>();
    
        vertical_input = input_value.y;
        horizon_input = input_value.x;
    }
}



코드 핵심 설명

[이동]
Translate()를 사용하여 자동차를 앞뒤로 이동한다.
vertical_input 값에 따라 전진 또는 후진이 결정된다.
Time.deltaTime을 사용하여 프레임과 관계없이 일정한 속도를 유지한다.

[회전]
Rotate()를 사용하여 자동차를 좌우로 회전시킨다.
horizon_input 값으로 방향을 제어한다.

[입력 처리]
New Input System을 사용하여 입력을 처리한다.
OnMove() 함수에서 Vector2 형태로 입력값을 받아온다.
X값은 좌우 이동, Y값은 전진/후진을 의미한다.


왜 이렇게 구현했는가

Transform을 이용한 이동 방식은 구현이 간단하고 직관적이기 때문에
초기 학습 단계에서 동작을 이해하기에 적합하다.

또한 New Input System을 사용하면 키보드뿐만 아니라
다양한 입력 장치를 확장하기 쉽다는 장점이 있다.


자주 발생하는 문제

자동차가 움직이지 않는 경우 다음을 확인해야 한다.

  • Player Input이 연결되지 않은 경우
  • Input Action(CarAction)이 설정되지 않은 경우
  • Rigidbody가 누락된 경우
  • Collider가 없는 경우

이 부분들을 먼저 점검하면 대부분 해결된다.

핵심 개념 정리

  • Rigidbody : 물리 기반 이동 처리
  • Transform : 위치 이동 및 회전 처리
  • Input System : 사용자 입력 처리
  • LateUpdate : 카메라 추적에 적합한 실행 시점


실행 결과

  • 자동차가 키보드 입력에 따라 이동한다.
  • 카메라는 자동차 뒤에서 따라온다.
  • 장애물과 충돌 시 물리 반응이 발생한다.


정리

이번 실습에서는 입력, 이동, 카메라, 충돌까지
게임의 기본 흐름을 전체적으로 구현해볼 수 있었다.



Posts created 242

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top

원활한 서비스 이용을 위한 안내

현재 광고 차단 프로그램이 켜져 있습니다. 이로 인해 사이트의 일부 기능이 제한될 수 있으니, 쾌적한 이용을 위해 광고 차단 해제 후 새로고침 부탁드립니다.