public void Execute(float dt) { m_Enemy.Move(m_FollowSpeed); //判断是否追击结束 m_FollowDis -= Time.deltaTime * m_Enemy.GetSpeed(); if (m_FollowDis <= 0 || !m_bNeedFollow) { m_Enemy.m_EnemyFSM.SetState(new MotoEnemyNormal(m_Enemy)); //m_Enemy.m_EnemyFSM.EndState(this); return; } //判断是否追上了转入攻击 Player pplayer = MoverManager.getInstance.m_Player; if (pplayer != null) { float length = (pplayer.transform.position - m_Enemy.transform.position).magnitude; if (length < m_Enemy.AttackDis()) { //m_Enemy.m_EnemyFSM.SetState(new MotoEnemyNormal(m_Enemy)); m_Enemy.m_EnemyFSM.SetState(new MotoEnemyAttack(m_Enemy)); return; } } }
public void Execute(float dt) { m_WaitTime -= Time.deltaTime; m_Enemy.Move(new Vector3(m_Speed, 0, 0)); if (m_WaitTime <= 0) { Player pplayer = MoverManager.getInstance.m_Player; if (pplayer != null) { float length = (pplayer.transform.position - m_Enemy.transform.position).magnitude; float followdis = Random.Range(0, 1.0f) * length; m_Enemy.m_EnemyFSM.SetState(new MotoEnemyFollow(m_Enemy, followdis)); } } }