//-------------------------------------------------------------------------------- // 心跳 //-------------------------------------------------------------------------------- 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; } } }
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(); } }
public override void Update(CAIController pAI) { if (pAI.m_pTarget == null) { return; } CreatureFSM pFSM = pAI.m_pOwner.m_FSM; if (pFSM != null) { pAI.AttackTarget(); } }
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(); }