接上一篇,这篇讲AI控制。
using System;
using UnityEngine;
using UnityEngine.AI;
using Random = UnityEngine.Random;
namespace UnityStandardAssets.Vehicles.Car
{
//添加关联脚本
[RequireComponent(typeof (CarController))]
public class CarAIControl : MonoBehaviour
{
//枚举刹车条件
public enum BrakeCondition
{
NeverBrake, // the car simply accelerates at full throttle all the time.汽车一直以最高速度行驶
//车会根据在朝着目标方向的即将发生的变化刹车,在转向时减速,在基于路线的AI
TargetDirectionDifference, // the car will brake according to the upcoming change in direction of the target. Useful for route-based AI, slowing for corners.
//车会在接近目标时刹车,不管目标的方向,对如果你想前往一个静止的目标,当到达那里时休息
TargetDistance, // the car will brake as it approaches its target, regardless of the target's direction. Useful if you want the car to
// head for a stationary target and come to rest when it arrives there.
}
//该脚本以与用户控件脚本相同的方式为控制器提供输入,正因如此,它实际是“驾驶”汽车,没有特殊的物理和动画技巧,使得汽车的行为正常。
// This script provides input to the car controller in the same way that the user control script does.
// As such, it is really 'driving' the car, with no special physics or animation tricks to make the car behave properly.
//“漫游”是用来给汽车一个更人性化,更少的机器人感觉。它们在向目标方向行驶时,速度和方向都有轻微的抖动。
// "wandering" is used to give the cars a more human, less robotic feel. They can waver slightly
// in speed and direction while driving towards their target.
//[Range(0,1)]使得变量范围为0~1;
//最谨慎的时候使用最大速度的百分比
//[SerializeField] private BoxCollider Check;
[SerializeField] [Range(0, 1)] private float m_CautiousSpeedFactor = 0.05f; // percentage of max speed to use when being maximally cautious
//接近转弯的角度去当作保证最大的谨慎去处理
[SerializeField] [Range(0, 180)] private float m_CautiousMaxAngle = 50f; // angle of approaching corner to treat as warranting maximum caution
//最大安全距离
[SerializeField] private float m_CautiousMaxDistance = 100f; // distance at which distance-based cautiousness begins
//AI应该考虑它的角速度(例如旋转时放开加速度)谨慎使用
[SerializeField] private float m_CautiousAngularVelocityFactor = 30f; // how cautious the AI should be when considering its own current angular velocity (i.e. easing off acceleration if spinning!)
//AI如何使用转向输入转向期望的方向。
[SerializeField] private float m_SteerSensitivity = 0.05f; // how sensitively the AI uses steering input to turn to the desired direction
//AI如何使用加速器达到当前所需的速度
[SerializeField] private float m_AccelSensitivity = 0.04f; // How sensitively the AI uses the accelerator to reach the current desired speed
//AI如何使用制动器达到当前所需的速度
[SerializeField] private float m_BrakeSensitivity = 1f; // How sensitively the AI uses the brake to reach the current desired speed
//汽车将朝着目标的方向移动多远?
[Ser