63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class PoliceCar : MonoBehaviour
|
|
{
|
|
// Start is called before the first frame update
|
|
private float horizontal;
|
|
private float vertical;
|
|
public MeshRenderer[] wheelMesh;
|
|
public WheelCollider[] wheelCollider;
|
|
[SerializeField] private float m_MaximumSteerAngle;
|
|
private float maxDigree;
|
|
private float maxMotor;
|
|
private float m_SteerAngle;
|
|
|
|
private void Start()
|
|
{
|
|
maxDigree = 90;
|
|
maxMotor = 3000;
|
|
//rg =GetComponent<Rigidbody>();
|
|
//wheelMesh = transform.GetChild(1).GetComponentsInChildren<MeshRenderer>();
|
|
//wheelCollider = transform.GetChild(4).GetComponentsInChildren<WheelCollider>();
|
|
}
|
|
private void FixedUpdate()
|
|
{
|
|
horizontal = Input.GetAxis("Horizontal2");
|
|
vertical = Input.GetAxis("YouMen");
|
|
//vertical = Mathf.Clamp(vertical, 0, 1);
|
|
vertical = -vertical;
|
|
Move();
|
|
}
|
|
void Move()
|
|
{
|
|
for (int i = 0; i < 4; i++)//汽车动力
|
|
{
|
|
if (i < 2)
|
|
{
|
|
wheelCollider[i].steerAngle = (-horizontal * 25);
|
|
|
|
}
|
|
//if (i > 2 && i < 4)
|
|
//{
|
|
// wheelCollider[i].motorTorque = maxMotor * vertical;
|
|
// Debug.Log(vertical);
|
|
//}
|
|
//wheelCollider[i].motorTorque = maxMotor * vertical;
|
|
}
|
|
wheelCollider[2].motorTorque = maxMotor * vertical;
|
|
wheelCollider[3].motorTorque = maxMotor * vertical;
|
|
for (int j = 0; j < 4; j++)//轮胎旋转
|
|
{
|
|
wheelMesh[j].transform.localRotation = Quaternion.Euler(wheelCollider[j].rpm / 60 * 360,-wheelCollider[j].steerAngle,wheelMesh[j].transform.localRotation.z);
|
|
wheelMesh[j].transform.localRotation = Quaternion.Euler(wheelCollider[j].rpm / 60 * 360, -wheelCollider[j].steerAngle-90, wheelMesh[j].transform.localRotation.z);
|
|
}
|
|
m_SteerAngle = horizontal * m_MaximumSteerAngle;
|
|
wheelCollider[0].steerAngle = m_SteerAngle;
|
|
wheelCollider[1].steerAngle = m_SteerAngle;
|
|
|
|
}
|
|
}
|
|
|