public override void Apply(CAIController from, CAIController to) { //Debug.Log("buff apply to target"); base.Apply(from, to); //不是己方给与的效果, 那么我们就人物是伤害了 //TODO 可能有坑 if (m_owner != null && !m_owner.SameTeam(m_from)) { m_owner.Pawn.Instigator = m_from; } if (MBuffMeta.Duration > 0) { m_durationReg = new CTimeRegulator(MBuffMeta.Duration); //Debug.Log("create duration time is " + m_meta.Duration); } if (MBuffMeta.Period > 0) { m_dotReg = new CTimeRegulator(MBuffMeta.Period); OnPeriod(); } ApplyModification(); ApplyState(); }
/// <summary> /// TODO 目前没有调用 /// 完善技能系统后再说 /// </summary> /// <param name="owner"></param> /// <param name="target"></param> public void Attack(CAIController owner, CController target) { /*if (m_effect == null){ * m_effect = CEffectHelper.CreateCEffect(m_meta.Effect, gameObject); * } * if(m_effect != null)m_effect.Apply(owner, target);*/ }
private AIStateType ReturnTransition(CAIController pAI) { if (pAI.m_bArrivedReturnPos) { return(AIStateType.AIST_Idle); } return(AIStateType.AIST_Return); }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public override void Update(CAIController pAI) { if (pAI.m_pOwner != null) { pAI.UpdatePatrol(); } pAI.UpdateLookForEnemy(); }
//----------------------------------------------------------------------------------------- // 进入本行为 //----------------------------------------------------------------------------------------- public override void Enter(CAIController pAI) { // 清楚所有仇恨 pAI.m_pTarget = null; pAI.ClearAllEnmity( ); // 重置巡逻和锁敌的时间 pAI.ReSetPatrolRestTime( ); pAI.ReSetLookForTargetTime( ); }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public override void Update(CAIController pAI) { if (pAI.m_pOwner == null) { return; } if (pAI.m_pTarget != null) { pAI.UpdatePursue(); } }
//----------------------------------------------------------------------------------------- // 进入本行为 //----------------------------------------------------------------------------------------- public override void Enter(CAIController pAI) { if (pAI.m_pOwner == null) { return; } if (pAI.m_pTarget != null) { pAI.StartPursue(); } }
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(); } }
private AIStateType AttackTransition(CAIController pAI) { if (pAI.m_pTarget == null) { return(AIStateType.AIST_Return); } if (!pAI.IsInAttackDistance()) { return(AIStateType.AIST_Pursue); } return(AIStateType.AIST_Attack); }
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 override void Enter(CAIController pAI) { CNPCEntity pOwner = pAI.m_pOwner; if (pOwner == null) { return; } pAI.StartReturn(); pAI.ClearAllEnmity(); pAI.m_pTarget = null; pOwner.SetState(EState.ES_Invincible); }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public override void Exit(CAIController pAI) { CNPCEntity pOwner = pAI.m_pOwner; if (pOwner == null) { return; } // 回满蓝和血 pOwner.SetAttValue(ERoleAttribute.ERA_HP, pOwner.GetAttValue(ERoleAttribute.ERA_HP), false); pOwner.SetAttValue(ERoleAttribute.ERA_MP, pOwner.GetAttValue(ERoleAttribute.ERA_MP), false); pOwner.UnSetState(EState.ES_Invincible); }
/// <summary> /// 注册刺激产生者 /// </summary> public void RegisterStimusSource(string stimus, CAIController src) { if (!m_stimusDict.ContainsKey(stimus)) { m_stimusDict[stimus] = new List <CAIController>(); } if (m_stimusDict[stimus].Contains(src)) { Debug.LogError("U duplicate RegisterStimusGenerator with " + stimus + " " + src.name); return; } m_stimusDict[stimus].Add(src); }
private AIStateType IdleTransition(CAIController pAI) { if (pAI.m_pTarget == null) { return(AIStateType.AIST_Idle); } if (pAI.IsInAttackDistance()) { return(AIStateType.AIST_Attack); } else { return(AIStateType.AIST_Pursue); } }
public override void Update(List <CAIController> stimusSrcList) { base.Update(stimusSrcList); bool isReady = m_regulator.Update(); if (!isReady) { return; } for (int i = 0; i < stimusSrcList.Count; ++i) { CAIController enemy = stimusSrcList[i]; if (enemy.Pawn.DeadOrDyingOrInvalid) { continue; } bool isEnemy = Owner.Pawn.IsEnemyTeam(enemy.Pawn); if (!isEnemy) { continue; } bool canSee = Owner.LineOfSightTo(enemy, Vector3.zero); if (!canSee) { continue; } //如果能够看见 CAIStimulus stimu = new CAIStimulus(); stimu.Sense = this; stimu.Source = Owner; stimu.Expired = false; stimu.Source = enemy; stimu.TimeBecameVisible = Time.realtimeSinceStartup; stimu.TimeLastSensed = Time.realtimeSinceStartup; stimu.StimulusLocation = enemy.LocalPosition; stimu.ReceiverLocation = Owner.LocalPosition; AddOrUpdateStimulu(stimu); return; } }
/// <summary> /// from是buff来源于谁--技能释放者或者飞弹之类的 /// to是buff挂在谁身上 /// </summary> public virtual void Apply(CAIController from, CAIController to) { m_from = from; m_to = to; //理论上我们调用这个方法的时候, behavior已经挂在to的身上了 if (m_owner != to) { Debug.LogError("buff attach to wrong target"); return; } if (from == null) { Debug.LogError("buff has not instigator"); return; } }
public override AIStateType Transition(CAIController pAI, AIStateType eCurState) { if (eCurState == AIStateType.AIST_Idle) { IdleTransition(pAI); } else if (eCurState == AIStateType.AIST_Pursue) { PursueTransition(pAI); } else if (eCurState == AIStateType.AIST_Attack) { AttackTransition(pAI); } else if (eCurState == AIStateType.AIST_Return) { ReturnTransition(pAI); } return(AIStateType.AIST_Idle); }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public override void Update(CAIController pAI) { }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public override void Exit(CAIController pAI) { }
//----------------------------------------------------------------------------------------- // 进入本行为 //----------------------------------------------------------------------------------------- public override void Enter(CAIController pAI) { }
void Start() { m_owner = gameObject.GetComponent <CAIController>(); }
/// <summary> /// 派发消息给target /// </summary> public static void Send(CAIController target, CAIMessage message) { target.BrainComp.HandleMessage(message); }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public virtual void Update(CAIController pAI) { }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public virtual void Exit(CAIController pAI) { }
//----------------------------------------------------------------------------------------- // 进入本行为 //----------------------------------------------------------------------------------------- public virtual void Enter(CAIController pAI) { }
protected virtual void OnDestroy() { m_owner = null; }
public virtual AIStateType Transition(CAIController pAI, AIStateType eCurState) { return(AIStateType.AIST_Idle); }
//----------------------------------------------------------------------------------------- // 退出本行为 //----------------------------------------------------------------------------------------- public override void Update(CAIController pAI) { pAI.UpdateReturn(); }
protected virtual void Awake() { m_owner = gameObject.GetComponent <CAIController>(); }