using System; using System.Collections; using UnityEngine; namespace OnlyScove.Scripts { public class ParkourController : MonoBehaviour { [SerializeField] private InputReader inputReader; EnvironmentScanner environmentScanner; Animator animator; PlayerController playerController; bool inAction; private void Awake() { inputReader = GetComponent(); environmentScanner = GetComponent(); animator = GetComponent(); playerController = GetComponent(); } private void OnEnable() { inputReader.OnJumpEvent += HandleParkour; } private void OnDisable() { inputReader.OnJumpEvent -= HandleParkour; } private void HandleParkour() { var hitData = environmentScanner.ObstacleCheck(); if (hitData.forwardHitFound) { StartCoroutine(DoParkourAction()); } } IEnumerator DoParkourAction() { inAction = true; playerController.SetControl(false); animator.CrossFade("Step Up", 0.1f); yield return null; var animationState = animator.GetNextAnimatorStateInfo(0); yield return new WaitForSeconds(animationState.length); playerController.SetControl(true); inAction = false; } } }