Пример #1
0
    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();
        }
    }
Пример #2
0
        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);
        }