60 lines
1.4 KiB
C#
60 lines
1.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class VehichleControl : MonoBehaviour
|
|
{
|
|
public InputController InputCtrl;
|
|
[Tooltip("Set ref in order of FL, FR, RL, RR")]
|
|
public WheelCollider[] WheelColliders;
|
|
|
|
[Tooltip("Set ref of wheel meshes in order of FL, FR, RL, RR")]
|
|
public Transform[] Wheels;
|
|
|
|
public Transform CenterOfMass;
|
|
|
|
public int Force;
|
|
public int Angle;
|
|
public int BrakeForce;
|
|
|
|
private void Drive()
|
|
{
|
|
WheelColliders[0].motorTorque = WheelColliders[1].motorTorque = InputCtrl.Vertical * Force;
|
|
}
|
|
|
|
private void Steer()
|
|
{
|
|
WheelColliders[0].steerAngle = WheelColliders[1].steerAngle = InputCtrl.Horizontal * Angle;
|
|
}
|
|
|
|
private void Brake()
|
|
{
|
|
WheelColliders[0].brakeTorque = WheelColliders[1].brakeTorque = InputCtrl.Brake * BrakeForce;
|
|
}
|
|
|
|
private void UpdateWheelMovements()
|
|
{
|
|
for (var i = 0; i < Wheels.Length; i++)
|
|
{
|
|
Vector3 pos;
|
|
Quaternion rot;
|
|
WheelColliders[i].GetWorldPose(out pos, out rot);
|
|
Wheels[i].transform.position = pos;
|
|
Wheels[i].transform.rotation = rot;
|
|
}
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
Steer();
|
|
Drive();
|
|
Brake();
|
|
UpdateWheelMovements();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
GetComponent<Rigidbody>().centerOfMass = CenterOfMass.localPosition;
|
|
}
|
|
}
|