示例#1
0
 //--------------------------------------------------------------------------------
 // 心跳
 //--------------------------------------------------------------------------------
 void Update()
 {
     if (m_AI != null && m_LocalFSM == null)
     {
         if (m_AI.m_pOwner != null && m_AI.m_pOwner.m_FSM != null)
         {
             m_LocalFSM = m_AI.m_pOwner.m_FSM;
         }
     }
 }
示例#2
0
    public void InitEntity(uint dwTypeID)
    {
        InitEnemy(dwTypeID, false);
        m_FSM          = new CreatureFSM(this);
        m_AIController = new CAIController(this);
        m_pMoveCtrl    = new CMoveController(this);

        /// 初始化完毕后进入空闲状态
        if (m_FSM != null)
        {
            m_FSM.Change2IdleBeHavior();
        }
    }
示例#3
0
    public override void Update(CAIController pAI)
    {
        if (pAI.m_pTarget == null)
        {
            return;
        }

        CreatureFSM pFSM = pAI.m_pOwner.m_FSM;

        if (pFSM != null)
        {
            pAI.AttackTarget();
        }
    }
示例#4
0
    public void AttackTarget()
    {
        if (m_fNextAttackWaitTime > 0)
        {
            m_fNextAttackWaitTime -= Time.deltaTime;
            return;
        }

        if (m_pTarget == null)
        {
            return;
        }

        CreatureFSM pFSM = m_pOwner.m_FSM;

        if (pFSM == null)
        {
            return;
        }

        if (m_pOwner.m_pMoveCtrl != null)
        {
            m_pOwner.m_pMoveCtrl.StopMove();
        }


        float fdis = (m_GameObject.transform.position - m_pTarget.gameObject.transform.position).magnitude;

        if (m_pOwner.m_pRangedSkill != null)
        {
            if (fdis <= m_pOwner.m_pRangedSkill.GetDist())
            {
                pFSM.ChangeBeHavior(BehaviorType.EState_Skill, m_pOwner.m_pRangedSkill.GetID());
            }
        }

        if (m_pOwner.m_pMeleeSkill != null)
        {
            if (fdis <= m_pOwner.m_pMeleeSkill.GetDist())
            {
                pFSM.ChangeBeHavior(BehaviorType.EState_Skill, m_pOwner.m_pMeleeSkill.GetID());
            }
        }

        SetAttackWaitTime();
    }