1 using UnityEngine; 2 using System.Collections; 3 4 public class Vehicle : MonoBehaviour 5 { 6 //行爲列表 7 private Steering[] steerings; 8 //這個AI角色的最大速度 9 public float maxSpeed = 10; 10 //這個AI角色的最大力 11 public float maxForce = 100; 12 //速度平方提早存起來節省資源 13 protected float sqrMaxSpeed; 14 //質量 15 public float mass = 1; 16 //速度 17 public Vector3 velocity; 18 //轉向速度 19 public Vector3 damping = 0.9f; 20 //操縱力的時間間隔 21 public float computeInterval = 0.2f; 22 //是否在二位平面上,若是在 計算兩個GameObject的距離時忽略Y 23 public bool isPlanar = true; 24 //計算獲得的操控力 25 private Vector3 steeringForce; 26 //加速度 27 protected Vector3 acceleration; 28 //計時器 29 private float timer; 30 31 protected void Start() 32 { 33 steeringForce = new Vector3 (0,0,0); 34 sqrMaxSpeed = maxSpeed * maxSpeed; 35 timer = 0; 36 steerings = GetComponent<Steering> (); 37 } 38 39 void Update () 40 { 41 timer += Time.deltaTime; 42 steeringForce = new Vector3 (0,0,0); 43 if(timer > computeInterval) 44 { 45 //將全部行爲所附加的操縱力求和 46 foreach(Steering s in steerings) 47 { 48 if(s.enabled) 49 { 50 steeringForce += s.Force*s.weight; 51 } 52 } 53 steeringForce = Vector3.ClampMagnitude(steeringForce,maxForce); 54 acceleration = steeringForce / mass; 55 timer = 0; 56 } 57 } 58 }