public override void OnTick(float DeltaTime) { if (Fsm.Master.Actor.AnimationIsEnd()) { Fsm.ChangeToIdleState(); return; } }
public override void OnEnter(CombatEvent Event) { if (Fsm.Master.IsStatic) { Fsm.ChangeToIdleState(); return; } BeginPos_ = Fsm.Master.Position; EndPos_ = (Event as NpcWalkEvent).TargetPos; MoveTime_ = 0; MoveTotalTime_ = (EndPos_ - BeginPos_).magnitude / Fsm.Master.CalcFinalAttr(NpcAttrIndex.Speed); IsMove_ = true; Fsm.Master.Actor.PlayAnimation("Walk", true); Fsm.Master.Actor.SetDirection(CombatHelper.CalcDirection(BeginPos_, EndPos_)); }
public override void OnEnter(CombatEvent Event) { if (Fsm.Master.IsStatic) { Fsm.ChangeToIdleState(); return; } Fsm.Master.Actor.PlayAnimation("Idle", true); var Evt = (Event as NpcBackEvent); StartPos_ = Fsm.Master.Position; BackPos_ = Evt.BackPos; BackTime_ = Evt.BackTime; Time_ = 0; IsEnd_ = false; }
public override void OnTick(float DeltaTime) { if (!IsMove_) { Fsm.ChangeToIdleState(); return; } MoveTime_ += DeltaTime; var T = MoveTime_ / MoveTotalTime_; if (T >= 1.0f) { T = 1.0f; IsMove_ = false; } Fsm.Master.Position = Vector2.Lerp(BeginPos_, EndPos_, T); }
public override void OnTick(float DeltaTime) { if (IsEnd_) { Fsm.ChangeToIdleState(); return; } Time_ += DeltaTime; var T = Time_ / BackTime_; if (T >= 1.0f) { IsEnd_ = true; T = 1.0f; } Fsm.Master.Position = Vector2.Lerp(StartPos_, BackPos_, T); }
public override void OnCombatEvent(CombatEvent Event) { if (Event is NpcWalkEvent) { Fsm.ChangeToState(FsmStateName.Walk, Event); } else if (Event is NpcIdleEvent) { Fsm.ChangeToIdleState(); } else if (Event is NpcSkillEvent) { Fsm.ChangeToState(FsmStateName.Skill, Event); } else if (Event is NpcDieEvent) { Fsm.ChangeToState(FsmStateName.Die, Event); } else if (Event is NpcBackEvent) { Fsm.ChangeToState(FsmStateName.Back, Event); } }
public override void OnEnter(CombatEvent Event) { var Evt = Event as NpcSkillEvent; SkillID_ = Evt.SkillID; Skill_ = Fsm.Master.Skill.GetSkill(SkillID_) as NpcSkill; if (Skill_ == null) { Fsm.ChangeToIdleState(); return; } Args_ = Evt.Args ?? Fsm.Master.Skill.CreateSkillArgs(SkillID_); if (Fsm.Master.Actor.HasAnimation("Attack")) { Fsm.Master.Actor.PlayAnimation("Attack", false); if (!Mathf.Approximately(0, Args_.Direction.sqrMagnitude)) { Fsm.Master.Actor.FaceToPosition(Fsm.Master.Position + Args_.Direction); } else if (!Mathf.Approximately(0, Args_.Position.sqrMagnitude)) { Fsm.Master.Actor.FaceToPosition(Args_.Position); } else if (Fsm.Master.Action.IsValidTarget()) { Fsm.Master.Actor.FaceToPosition(Fsm.Master.Action.TargetNpc.Position); } } else { OnAtkMsg(); Fsm.ChangeToIdleState(); } }