标签:
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 }
标签:
原文地址:http://www.cnblogs.com/Akishimo/p/5057542.html