//被敌人发现的距离
var awareDistance:float=15.0f;
//敌人受惊吓后引发动作的距离
var scareDistance:float=10.0f;
//玩家角色
var player:Transform;
//奔跑速度
var runSpeed:float=4.0f;
//状态机枚举
enum AIStatus { idel=0,scared=1};
//状态机,初始化为闲置状态
private var status=AIStatus.idel;
//角色控制器
var Controller:CharacterController;
//移动方向
private var moveDistance=Vector3.zero;
//初始化函数,在Start()前被调用,整个游戏循环中只调用一次,相当于构造函数
function Awake()
{
Controller=GetComponent(CharacterController);
}
//Loop函数
function Update()
{ //检查状态机
CheckStatus();
//选择行为
switch(status)
{
case AIStatus.idel:
//闲置时动作
Idel();
break;
case AIStatus.scared:
//跑动
Run();
}
}
//检查状态机函数
function CheckStatus(){
//求两个点之间的距离,magnitude是sqrt((x-x1)^2+(y-y1)^2+(z-z1)^2)的值
var dist=(player.position-transform.position).magnitude;
//如果两个物体之间的距离小于<敌人被惊吓的距离>,那么触动受惊状态机
if(dist < scareDistance)
{
status=AIStatus.scared;
}
//如果两个物体之间的距离大于<被敌人发现的距离>,那么触动闲置状态机
else if(dist > awareDistance)
{
status=AIStatus.idel;
}
}
//敌人跑动函数
function Run(){ }
//敌人闲置函数
function Idel(){ }