public void ForceDamage(Vector3 dir, float damage) { pushDir = dir; TakeDamageState tdState = GetComponent <TakeDamageState>(); tdState.Damage = damage; if (!tdState.enabled) { GetComponent <MonoStateMachine>().DoTransition(tdState); } else { tdState.Renew(); } }
protected override void InitStateMachine() { _stateMachine = new FinitStateMachine(); BaseState idleState = null; if (data.WayPoints != null && data.WayPoints.Length > 1) { idleState = new PatrolState(_stateMachine, data); } else { idleState = new IdleDetectionState(_stateMachine, data); } var attackState = new RangeAttackState(_stateMachine, data); var chasingState = new ChasingState(_stateMachine, data, attackState); var cooldownState = new ChasingCooldownState(_stateMachine, data, attackState); var takeDamageState = new TakeDamageState(_stateMachine, data, chasingState); _stateMachine.AddStates(idleState, chasingState, attackState, cooldownState, takeDamageState); }