Beispiel #1
0
            public override void Enter(params object[] args)
            {
                _initialPosition = Character.Transform.position;

                _distance = 0;

                _strategy = (Objects.Actions.Strategies.TackleStrategy.Strategy)args[0];
                if (args.Length == 2)
                {
                    _target    = (BaseObject)args[1];
                    _direction = _target.Transform.position - Character.Transform.position;
                    _distance  = _direction.magnitude;
                }
                else
                {
                    _direction = Character.Transform.forward;
                    _distance  = _strategy._resource.MaxRange;
                }

                _direction = _direction.normalized;

                _strategy._direction = _direction;

                _targetHit         = false;
                _isOnHitSubscribed = false;
                SubscribeOnHit();

                _timer.Start(_strategy._resource._timeoutTime);

                _tackleCoroutine = TackleCoroutine();
                Character.StartCoroutine(_tackleCoroutine);
            }
Beispiel #2
0
        public virtual void Tackle(
            Objects.Actions.Strategies.TackleStrategy.Strategy strategy)
        {
            if (!IsMovementInputEnabled)
            {
                return;
            }

            FSM.TrySetState(Characters.FSM.Id.Tackle, strategy);
        }