private void SetUp() { var Data = Entity.GetComponent <KnightData>(); var Status = Entity.GetComponent <StatusManager_Knight>(); Status.OffBalance = false; Status.Interrupted = false; BackTime = Data.OffBalanceBackTime; StayTime = Data.OffBalanceStayTime; TimeCount = 0; Context.AttackCoolDownTimeCount = 0; AIUtility.RectifyDirection(Context.Player, Entity); if (Status.CurrentTakenAttack.Dir == Direction.Right) { Entity.GetComponent <SpeedManager>().SelfSpeed.x = Data.OffBalanceBackSpeed; } else if (Status.CurrentTakenAttack.Dir == Direction.Left) { Entity.GetComponent <SpeedManager>().SelfSpeed.x = -Data.OffBalanceBackSpeed; } }
private void CheckTime() { TimeCount += Time.deltaTime; if (TimeCount >= StateTime) { if (Context.CurrentAttackMode == KnightAttackMode.DoubleFirst) { AIUtility.RectifyDirection(Context.Player, Entity); Context.CurrentAttackMode = KnightAttackMode.DoubleSecond; TransitionTo <KnightAttackAnticipation>(); } else { TransitionTo <KnightEngage>(); } } }
private void KeepDis() { var Data = Entity.GetComponent <KnightData>(); var PlayerSpeedManager = Context.Player.GetComponent <SpeedManager>(); var SelfSpeedManager = Entity.GetComponent <SpeedManager>(); AIUtility.RectifyDirection(Context.Player, Entity); float AttackHitDis = (Data.SingleAttackHitBoxSize.x + Data.AttackStepForwardSpeed * Data.AttackTime) * Data.AttackAvailableHitBoxPercentage; float AttackHitBoxBorderToTruePos = Data.SingleAttackOffset.x - Data.SingleAttackHitBoxSize.x / 2 - (SelfSpeedManager.GetTruePos().x - Entity.transform.position.x) * Entity.transform.right.x; ShortAttackDis = AttackHitDis + AttackHitBoxBorderToTruePos; ChaseAttackMinDis = AttackHitDis + AttackHitBoxBorderToTruePos + Data.MinChaseAttackChaseDistance; ChaseAttackMaxDis = AttackHitDis + AttackHitBoxBorderToTruePos + Data.MaxChaseAttackChaseDistance; float Dis = Mathf.Abs(AIUtility.GetXDiff(Context.Player, Entity)) - PlayerSpeedManager.BodyWidth / 2; if (Dis <= ShortAttackDis) { Entity.GetComponent <SpeedManager>().SelfSpeed.x = 0; if (Context.AttackCoolDownTimeCount <= 0) { Context.AttackCoolDownTimeCount = Data.AttackCoolDown; MakeAttackDecision(); } } else if (Dis <= ChaseAttackMinDis) { Entity.GetComponent <SpeedManager>().SelfSpeed.x = Entity.transform.right.x * Data.NormalMoveSpeed; } else if (Dis <= ChaseAttackMaxDis) { Context.AttackCoolDownTimeCount = Data.AttackCoolDown; Context.CurrentAttackMode = KnightAttackMode.Chase; TransitionTo <KnightAttackAnticipation>(); } else { Entity.GetComponent <SpeedManager>().SelfSpeed.x = Entity.transform.right.x * Data.NormalMoveSpeed; } }
private void KeepDis() { var Data = Entity.GetComponent <SoulWarriorData>(); var PlayerSpeedManager = Context.Player.GetComponent <SpeedManager>(); var SelfSpeedManager = Entity.GetComponent <SpeedManager>(); AIUtility.RectifyDirection(Context.Player, Entity); float XDiff = AIUtility.GetXDiff(Context.Player, Entity); float AttackHitDis = (Data.SlashHitBoxSize.x + Data.AttackStepForwardSpeed * Data.SlashStrikeTime) * Data.SlashAvailableHitBoxPercentage; float AttackHitBoxBorderToTruePos = Data.SlashOffset.x - Data.SlashHitBoxSize.x / 2 - (SelfSpeedManager.GetTruePos().x - Entity.transform.position.x) * Entity.transform.right.x; float AttackDis = AttackHitDis + AttackHitBoxBorderToTruePos; if (Mathf.Abs(XDiff) > Data.MagicUseableDis) { SelfSpeedManager.SelfSpeed.x = Entity.transform.right.x * Data.NormalMoveSpeed; } else if (Mathf.Abs(XDiff) - PlayerSpeedManager.BodyWidth / 2 > AttackDis) { SelfSpeedManager.SelfSpeed.x = 0; if (Context.AttackCoolDownTimeCount <= 0) { TransitionTo <SoulWarriorMagicAnticipation>(); } } else { SelfSpeedManager.SelfSpeed.x = 0; if (Context.AttackCoolDownTimeCount <= 0) { TransitionTo <SoulWarriorSlashAnticipation>(); } } }