예제 #1
0
        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;
                }
            }
        }
예제 #2
0
        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));
                }
            }
        }