private void OnControllerColliderHit(ControllerColliderHit hit) { Debug.DrawRay(hit.point, hit.normal, Color.blue); //IF touching the ladder if (hit.transform.tag == "Ladder" && !_topOfLadder) { //HangingIdle //push one unit up the ladder for not being _controller.Move(Vector3.up * 0.1f); _controller.enabled = false; _activeLadder = hit.transform.GetComponent <Ladder>(); transform.position = _activeLadder.GetHanPosBottomOfLadder(); _anim.SetBool("Ladder", true); _onLadder = true; //wait 0.1 seconds o activate again the controller StartCoroutine(WaitToMovePosition()); Debug.Log("Move Up the ladder"); } if (hit.transform.tag == "Ladder" && _topOfLadder) { //MoveDownAnimation trigger //HangingIdle _controller.Move(Vector3.left * 0.1f); _onLadder = true; _controller.enabled = false; _activeLadder = hit.transform.GetComponent <Ladder>(); transform.position = _activeLadder.GetHandPosTopOfLadder(); //flip flipPlayer(); _anim.SetTrigger("ClimbDownLadder"); //StartCoroutine(WaitToMovePosition()); Debug.Log("MoveDownTheLadder"); } if (_controller.isGrounded == true && _onLadder) { _onLadder = false; _anim.SetFloat("LadderSpeed", 0.0f); _anim.SetBool("Ladder", false); //Moving down, if it hits ground remove Player from Ladder } }