//启动时调用 void Start() { //获取僵尸的各种组件 agent = GetComponent <NavMeshAgent>(); animator = GetComponent <Animator>(); zombieHealth = GetComponent <ZombieHealth> (); zombieSensor = GetComponentInChildren <ZombieSensor> (); zombieRender = GetComponent <ZombieRender> (); zombieTransform = transform; //把僵尸感知到的玩家字段设置为null targetPlayer = null; EnableZombie(false); AIInitFinish = true; }
private Transform targetPlayer; //僵尸感知范围内的玩家 //初始化 void OnEnable() { zombieTransform = transform; //获取Transform组件 animator = GetComponent <Animator>(); //获取动画管理器组件 agent = GetComponent <NavMeshAgent>(); //获取NavMeshAgent组件 //agent.updateRotation = false; //agent.updatePosition = false; zombieHealth = GetComponent <ZombieHealth> (); //获取僵尸生命值管理组件 zombieSoundSensor = GetComponentInChildren <ZombieSoundSensor> (); //获取僵尸感知器组件 zombieRender = GetComponent <ZombieRender>(); //获取僵尸渲染器控制组件 targetPlayer = null; //僵尸初始化时,未发现玩家,该值设为null curState = FSMState.Wander; //初始化僵尸状态 }
private bool firstInDead = true; //僵尸是否首次进入死亡状态 void OnEnable() { //获取僵尸的各种组件 agent = GetComponent <NavMeshAgent>(); animator = GetComponent <Animator>(); zombieHealth = GetComponent <ZombieHealth> (); zombieSensor = GetComponentInChildren <ZombieSensor> (); zombieRender = GetComponent <ZombieRender> (); zombieTransform = transform; //把僵尸感知到的玩家字段设置为null targetPlayer = null; //初始状态为死亡状态 currentState = FSMState.Dead; //禁用导航代理组件 agent.enabled = false; //自动初始化僵尸 if (autoInit) { Born(); } }