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 }