https://www.youtube.com/watch?v=pa9T4CL9qow 이 영상을 보면서 하나씩 따라 했다.
맨 처음 차량 Asset부터 다운 받아야한다.
아래 링크에서 자동차를 검색에서 무료 에셋을 다운 받는다. - 내 에셋에 추가하기를 누르면 된다.
다운을 받으면 Unity에서 열기를 누르면 된다.
그러면 Unity로 이동하게 되고 Package Manager가 나온다. 여기서 다운로드를 누르면 된다.
그리고 Import를 누르면 사용이 가능하다.
이제 여기서 가장 왼쪽에 'Hierachy'에서 SampleScene에 들어가진 상태에서 오른쪽 버튼을 누르면 아래와 같은 화면이 나온다. 3D Object - Terrain 을 누르면 아래와 같은 화면이 추가된 걸 볼 수 있다.
그리고 다시 오른쪽 버튼을 눌러서 Create Empty를 누른다.
그리고 반복을 해가며 아래와 같은 Object 구조를 만들어준다.
우리는 여기서 이제 차량 조종과 실제 시각적 움직임 두 스크립트를 만들어줘야한다.
Asset부분에 C# Script를 아래와 같이 2개 생성해준다.
Wheel.cs는 아래와 같이
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Wheel : MonoBehaviour
{
[SerializeField] WheelCollider _wheelCollider;
[SerializeField] Transform _wheelTF;
private void FixedUpdate()
{
_wheelCollider.GetWorldPose(out Vector3 pos, out Quaternion rot);
_wheelTF.position = pos;
_wheelTF.rotation = rot;
}
public void AddTorque (float torq)
{
_wheelCollider.motorTorque = torq;
}
public void AddSteerAngle(float angle)
{
_wheelCollider.steerAngle = angle;
}
}
VehiclePhsysic.cs는 아래와 같이 작성하면 된다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VehiclePhysic : MonoBehaviour
{
[SerializeField] float _maxTorq = 100f;
[SerializeField] float _maxSteerAngle = 30f;
[SerializeField] Wheel[] _motorWheel;
[SerializeField] Wheel[] _steerWheel;
private void Update()
{
float gas = Input.GetAxis("Vertical");
float steer = Input.GetAxis("Horizontal");
MoveCar(gas, steer);
}
void MoveCar(float gas, float steer)
{
foreach (Wheel item in _motorWheel)
{
item.AddTorque(gas * _maxTorq);
}
foreach (Wheel item in _steerWheel)
{
item.AddSteerAngle(steer * _maxSteerAngle);
}
}
}
이제 다시 유니티로 돌아와서 아래 Project에서 Assets-ARCADE-Prefabs(Meshes Only)를 클릭하고 원하는 차를 드래그 해서 Hierarchy에서 Body의 밑으로 가게 한다.
그리고 이제 Free Racing Car에서 오른쪽 버튼 - prefabs를 누르고 unpack을 한다음 Wheel들을 우리가 만들어둔 Wheels 아래로 가게 한다.
그리고 여기서부터 조금 어려운 것 같다. Wheel들을 전부 복사를 한다 그리고 똑같이 붙여넣기를 한다음에 원래 FrontLeftWheel, FrontRightWheel 4개 를 클릭해서 Inspector에서 Mesh Renderer를 전부 삭제 시킨다. 그리고 복사본을 원본의 child로 넣는다. 그 다음 Wheel에는 4개를 드래그 해 Add Component를 하고 Wheel Collider를 추가해주고 Vehicle에는 Rigidbody를 추가해준다.
그리고 각각 Wheel.cs를 추가해주고 Wheel Collider와 Wheel TF를 연결 시켜준다. 여기서 조심해야 할 부분은 Collider에는 부모 TF에는 Child를 매칭시켜줘야한다
그리고 Vehicle에도 스크립트 파일을 추가해주고 Motor Wheel과 Steer Wheel을 각각 추가해준다.
그리고 아까의 파일 구조에서 Free ... 이렇게 되어있던 Object에서 Body와 Spoiler를 Body의 바로 child가 되게 하고 Free ... 이 ojbect를 지운다. 그리고 Add Component를 눌러 Mesh Collider를 추가하고 Convex를 체크한다
이렇게 하고 실행을 누르면
안 된 다.