public override void UpdateState() { if (EnteredState) { _totalTime += Time.deltaTime; if (FairyCharacter.PlayerNearby()) { Fsm.EnterState(FsmStateType.Chase); } if (_totalTime >= _idleDuration) { Fsm.EnterState(FsmStateType.Patrol); } } }
public override void UpdateState() { if (EnteredState) { if (FairyCharacter.PlayerNearby()) { Fsm.EnterState(FsmStateType.Chase); } if (_cornerIndex <= _pathCorners.Length - 1) { // Get the next movement vector, and if true then the corner will be reached if (FairyOperations.GetNextPosition(_pathCorners[_cornerIndex], FairyCharacter.GroundCheck.transform.position, FairyCharacter.MovementSpeed, out Vector3 nextMovement)) { // Prepare to move to next corner on next update if (_cornerIndex <= _pathCorners.Length - 1) { _cornerIndex += 1; } } // Move towards the new position and look towards it too FairyCharacter.transform.position += nextMovement; Vector3 nextLook = new Vector3(nextMovement.x, 0, nextMovement.z); if (!nextLook.Equals(new Vector3(0, 0, 0))) { FairyCharacter.transform.rotation = Quaternion.LookRotation(nextLook); } } // Check if the enemy should stop if (_cornerIndex >= _pathCorners.Length) { Fsm.EnterState(FsmStateType.Idle); } } }
public override void UpdateState() { if (EnteredState) { if (FairyCharacter.PlayerVisible()) { _fireTimer += Time.deltaTime; FairyCharacter.transform.rotation = FairyOperations.TurnTowardPlayer(FairyCharacter.transform, FairyCharacter.Player.transform); if ((_fireTimer >= _firingRate) && (FairyCharacter.Fire())) { FairyCharacter.ChargeAnimationControl.StopChargeAnimation(); Fsm.EnterState(FsmStateType.Chase); } } else { FairyCharacter.ChargeAnimationControl.StopChargeAnimation(); Fsm.EnterState(FsmStateType.Chase); } } }