using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Car_player : MonoBehaviour
{
[Header("四个轮子")]
public GameObject[] wheel_obj;
[Header("四个 WheelColider")]
public WheelCollider[] wheel_colider;
[Header("最大角距")]
private float max_steerAngle = 30;
[Header("电动机转矩")]
private float motorTorque=200;
[Header("相机跟随速度")]
public float speed=3;
[Header("相机跟随的固定点")]
private Vector3 point;
[Header("相机跟随目标")]
private Transform target;
[Header("临时变量")]
private Vector3 target_position;
private float H;
private float v;
// Start is called before the first frame update
void Start()
{
//注意点 1.父类添加Rigidbody 并添加质量1000左右,并添加colider 2.colider 不要贴地皮否则不移动
target = transform;
point = new Vector3 (0,3,-5);
}
// Update is called once per frame
void Update()
{
H = Input.GetAxis("Horizontal");
v = Input.GetAxis("Vertical");
if (Mathf.Abs(H) == 0 && Mathf.Abs(v) == 0)
{
return;
}
Move();
}
private void Move()
{
//前两轮 绕y轴旋转的角度 即转向
for (int i = 0; i < 2; i++)
{
wheel_colider[i].steerAngle = H * max_steerAngle;
}
//四个轮的绕 x轴旋转 并移动
for (int i = 0; i < wheel_colider.Length; i++)
{
wheel_colider[i].motorTorque = motorTorque * v;
}
// 轮胎 模型跟随wheelcolider 转动 rpm 转速默认每分钟
for (int i = 0; i < 4; i++)
{
wheel_obj[i].transform.localRotation = Quaternion.Euler(wheel_colider[i].rpm*360/60, wheel_colider[i].steerAngle,0);
}
}
private void FixedUpdate()
{
target_position = target.position + target.TransformDirection(point);
Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, target_position,Time.deltaTime* speed);
Camera.main.transform.LookAt(target);
}
}