// Update is called once per frame void Update() { if (!canMove) { return; } score += Time.deltaTime * speed; uiManagement.UpdateScore((int)score); if (Input.GetKeyDown(KeyCode.LeftArrow)) { buttonPressAudio.Play(); ChangeLane(-1); } else if (Input.GetKeyDown(KeyCode.RightArrow)) { buttonPressAudio.Play(); ChangeLane(1); } else if (Input.GetKeyDown(KeyCode.UpArrow)) { Jump(); } else if (Input.GetKeyDown(KeyCode.DownArrow)) { Slide(); } if (jumping) { float ratio = (transform.position.z - jumpStart) / jumpLength; if (ratio >= 1f) { jumping = false; anim.SetBool("Jumping", false); } else { verticalTargetPosition.y = Mathf.Sin(ratio * Mathf.PI) * jumpHeight; } } else { verticalTargetPosition.y = Mathf.MoveTowards(verticalTargetPosition.y, 0, 5 * Time.deltaTime); } if (sliding) { float ratio = (transform.position.z - slideStart) / slideLength; if (ratio >= 1f) { sliding = false; anim.SetBool("Sliding", false); boxCollider.size = boxColliderSize; } } Vector3 targetPosition = new Vector3(verticalTargetPosition.x, verticalTargetPosition.y, transform.position.z); transform.position = Vector3.MoveTowards(transform.position, targetPosition, laneSpeed * Time.deltaTime); }