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); }
public virtual void Tackle( Objects.Actions.Strategies.TackleStrategy.Strategy strategy) { if (!IsMovementInputEnabled) { return; } FSM.TrySetState(Characters.FSM.Id.Tackle, strategy); }