• 大小: 20KB
    文件类型: .cs
    金币: 2
    下载: 1 次
    发布日期: 2021-08-30
  • 语言: C#
  • 标签: Unity3D  

资源简介

本资源是我关于官方资源Standard Assets -->Vehicles-->Car中车的主控脚本CarController.cs的个人全注释,及一些心得,我当时觉得这个脚本中有一些属性不是很理解,于是做了分析。希望能帮到有需要的朋友

资源截图

代码片段和文件信息

using System;
using UnityEngine;

namespace UnityStandardAssets.Vehicles.Car
{
//汽车驱动类型
    internal enum CarDriveType
    {
//四驱
        FrontWheelDrive
//后驱
        RearWheelDrive
//前驱
        FourWheelDrive
    }
//速度类型
    internal enum SpeedType
    {
//英里每小时
        MPH
//千米每小时
        KPH
    }

    public class CarController : MonoBehaviour
    {
        [SerializeField] private CarDriveType m_CarDriveType = CarDriveType.FourWheelDrive;
        [SerializeField] private WheelCollider[] m_WheelColliders = new WheelCollider[4];
        [SerializeField] private Gameobject[] m_WheelMeshes = new Gameobject[4];
        [SerializeField] private WheelEffects[] m_WheelEffects = new WheelEffects[4];
//重心位置
        [SerializeField] private Vector3 m_CentreOfMassOffset;
//最大可转角度
        [SerializeField] private float m_MaximumSteerAngle;
        [Range(0 1)] [SerializeField] private float m_SteerHelper; // 0 is raw physics  1 the car will grip in the direction it is facing
        [Range(0 1)] [SerializeField] private float m_TractionControl; // 0 is no traction control 1 is full interference
//所有轮胎的扭矩
        [SerializeField] private float m_FullTorqueOverAllWheels;
//反向扭矩
        [SerializeField] private float m_ReverseTorque;
//最大刹车扭矩
        [SerializeField] private float m_MaxHandbrakeTorque;
//最大下压力
        [SerializeField] private float m_Downforce = 100f;
//速度单位
        [SerializeField] private SpeedType m_SpeedType;
//最高速度
        [SerializeField] private float m_Topspeed = 200;
//档位总数
        [SerializeField] private static int NoOfGears = 5;
//
        [SerializeField] private float m_RevRangeBoundary = 1f;
//最大滑动距离
        [SerializeField] private float m_SlipLimit;
//刹车扭矩
        [SerializeField] private float m_BrakeTorque;

        private Quaternion[] m_WheelMeshLocalRotations;
        private Vector3 m_Prevpos m_Pos;
        private float m_SteerAngle;
//当前档位
        private int m_GearNum;
//档位因子
        private float m_GearFactor;
//上一帧汽车方向
        private float m_OldRotation;
//当前扭矩
        private float m_CurrentTorque;
        private Rigidbody m_Rigidbody;
        private const float k_ReversingThreshold = 0.01f;

        public bool Skidding { get; private set; }
        public float BrakeInput { get; private set; }
        public float CurrentSteerAngle{ get { return m_SteerAngle; }}
public float CurrentSpeed{ get { if(m_Rigidbody == null) return 0;return m_Rigidbody.velocity.magnitude*2.23693629f; }}
        public float MaxSpeed{get { return m_Topspeed; }}
        public float Revs { get; private set; }
        public float AccelInput { get; private set; }
public Rigidbody CarRigidbody { get{return m_Rigidbody;}}
        // Use this for initialization
        private void Start()
        {
//四个轮胎的自转方向
            m_WheelMeshLocalRotations = new Quaternion[4];
            for (int i = 0

评论

共有 条评论