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); } } }
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); } } }
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(); }); } }