예제 #1
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     if (_state == RushState.Rush && collision.collider.gameObject.layer != LayerMask.NameToLayer("Hero Arrow"))
     {
         _state = RushState.Rest;
         OnRest.Invoke();
         _startedRest = Time.time;
         if (_targetMarker != null)
         {
             Destroy(_targetMarker.gameObject);
         }
     }
 }
예제 #2
0
    private void RushLogic()
    {
        if (_state == RushState.Rush)
        {
            _lookAt.enabled = false;
            var nextPosition = Vector3.MoveTowards(transform.position, _target, Time.deltaTime * _stats.MovementSpeed);
            _lookAt.Position = _target;

            if (nextPosition == transform.position)
            {
                _state       = RushState.Rest;
                _startedRest = Time.time;
                Destroy(_targetMarker.gameObject);
                OnRest.Invoke();
            }
            else
            {
                _body.MovePosition(nextPosition);
                transform.LookAt2D(_target);
            }
        }
    }
예제 #3
0
    private void FromRestToAim()
    {
        if (_state != RushState.Rest)
        {
            return;
        }



        transform.rotation = Quaternion.identity;

        if (Time.time - _startedRest > _stats.RushPeriod)
        {
            if (_targetMarker == null)
            {
                _targetMarker = Instantiate(TargetMarkerPrefab, _player.position, Quaternion.identity).transform;
            }

            _lookAt.enabled = true;
            _state          = RushState.Aim;
            OnAiming.Invoke();

            DOTween.Sequence()
            .Append(DOTween.To(
                        () => _aimingProgress,
                        (value) => _aimingProgress = value,
                        1, 1))
            .AppendCallback(() =>
            {
                _aimingProgress = 0;
                _target         = _player.position;
                _state          = RushState.Rush;
                OnRushing.Invoke();
            });
        }
    }