private static void SetSwipeAnimation(SwipeInput.SwipeType swipeType) { string trigger = ""; swipeAnimator.SetBool(leftTrigger, false); swipeAnimator.SetBool(rightTrigger, false); swipeAnimator.SetBool(upTrigger, false); swipeAnimator.SetBool(downTrigger, false); switch (swipeType) { case SwipeInput.SwipeType.Left: trigger = leftTrigger; break; case SwipeInput.SwipeType.Right: trigger = rightTrigger; break; case SwipeInput.SwipeType.Up: trigger = upTrigger; break; case SwipeInput.SwipeType.Down: trigger = downTrigger; break; case SwipeInput.SwipeType.Tap: break; } swipeAnimator.SetBool(trigger, true); }
private void OnSwipe(SwipeInput.SwipeType swipeType) { if (_isUnderControl == false) { return; } switch (swipeType) { case SwipeInput.SwipeType.Up: StartJump(); break; case SwipeInput.SwipeType.Down: StartSlide(); break; case SwipeInput.SwipeType.Tap: break; case SwipeInput.SwipeType.Left: case SwipeInput.SwipeType.Right: ChangePath(swipeType); break; default: throw new ArgumentOutOfRangeException(nameof(swipeType), swipeType, null); } }
private void ChangePath2(SwipeInput.SwipeType swipeType) { var targetLine = currentRoadId; switch (swipeType) { case SwipeInput.SwipeType.Left: targetLine = Mathf.Clamp(--targetLine, 0, levelHolder._lines.Length - 1); break; case SwipeInput.SwipeType.Right: targetLine = Mathf.Clamp(++targetLine, 0, levelHolder._lines.Length - 1); break; } if (targetLine == currentRoadId) { return; } var p0 = _follower.result; // point on current spline var p1 = levelHolder._lines[targetLine].Evaluate(levelHolder._lines[targetLine].Project(p0.position)); // closest point on side line var d = p0.position - p1.position; if (!PlayerMover.CheckLineSwap(levelHolder._lines[targetLine], p0, levelHolder._lineWidth)) { return; } OnTrackChange?.Invoke(currentRoadId, targetLine); currentRoadId = targetLine; d.Normalize(); var d2 = new Vector2(Vector3.Dot(d, p1.right), Vector3.Dot(d, p1.normal)); // offset is [X * point.right + Y * point.normal] _follower.computer = levelHolder._lines[currentRoadId]; _changeRoadCoroutine = StartCoroutine(SwitchLine(d2)); }
public static void OnTutorialTriggerEnter(ITutorialObject tutorial, SwipeInput.SwipeType expectedType, bool finishTutorial) { swipe.Activate(); SetSwipeAnimation(expectedType); tutorial.Activate(); expectedSwipeType = expectedType; SwipeInput.OnPlayerSwiped += WaitForSwipe; PauseController.SetPause(); ControllManager.Instance.RemoveControl(); isFinishTutorial = finishTutorial; }
private static void TutorialCondition(SwipeInput.SwipeType swipeType) { if (swipeType == expectedSwipeType) { SwipeInput.OnPlayerSwiped -= WaitForSwipe; PauseController.Resume(); ControllManager.Instance.GiveControl(); OnTutorialFakeInput?.Invoke(swipeType); swipe.Deactivate(); if (isFinishTutorial == false) { ControllManager.Instance.RemoveControl(); } } }
private void ChangePath(SwipeInput.SwipeType swipeType) { if (_changeRoadCoroutine != null) { return; } var targetLine = currentRoadId; switch (swipeType) { case SwipeInput.SwipeType.Left: targetLine = Mathf.Clamp(--targetLine, 0, levelHolder._lines.Length - 1); break; case SwipeInput.SwipeType.Right: targetLine = Mathf.Clamp(++targetLine, 0, levelHolder._lines.Length - 1); break; } if (targetLine == currentRoadId) { return; } var p0 = _follower.result; // point on current spline if (CheckLineSwap(levelHolder._lines[targetLine], p0, levelHolder._lineWidth)) { _followCamera._isActive = false; var p1 = levelHolder._lines[targetLine].Evaluate(levelHolder._lines[targetLine].Project(p0.position)); // closest point on side line var d = p0.position - p1.position; d.Normalize(); currentRoadId = targetLine; _follower.enabled = false; _follower.computer = levelHolder._lines[currentRoadId]; var d2 = new Vector2(Vector3.Dot(d, p1.right), Vector3.Dot(d, p1.normal)); // offset is [X * point.right + Y * point.normal] _follower.motion.offset = d2; _changeRoadCoroutine = StartCoroutine(SwitchLine(d2)); } }
private static void WaitForSwipe(SwipeInput.SwipeType swipeType) { TutorialCondition(swipeType); }
void IOpponentMover.ChangePath(SwipeInput.SwipeType swipeType) => ChangePath2(swipeType);