void Update() { _horizontalAxis = Input.GetAxis("Horizontal"); _verticalAxis = Input.GetAxis("Vertical"); _prevCrankAngle = _crankAngle; float crankTurnRate = Mathf.Lerp(_crankMinTurnRate, _crankMaxTurnRate, _speedRatio); _crankAngle += crankTurnRate * -_horizontalAxis * Time.deltaTime; _crankAngle = Mathf.Clamp(_crankAngle, -_crankMaxAngle, _crankMaxAngle); _crankTransform.localRotation = Quaternion.AngleAxis(_crankAngle, Vector3.forward); if (_crankAngle > 0f && _prevCrankAngle <= 0f) { _leftDude.Duck(); _rightDude.Stand(); _audioSource.PlayOneShot(_crankClip); } else if (_crankAngle < 0f && _prevCrankAngle >= 0f) { _leftDude.Stand(); _rightDude.Duck(); _audioSource.PlayOneShot(_crankClip); } float crankDelta = _crankAngle - _prevCrankAngle; _crankForceRequested += crankDelta / _crankMaxAngle; if (_jumpCooldown > 0f) { _jumpCooldown -= Time.deltaTime; } if (Input.GetButtonDown("Jump")) { _audioSource.PlayOneShot(_jumpChargeClip); } else if (Input.GetButton("Jump")) { _jumpCharge += Time.deltaTime; } else if (Input.GetButtonUp("Jump")) { float t = Mathf.Clamp01(_jumpCharge / _maxJumpChargeTime); _jumpForceRequested = Mathf.Lerp(_minJumpForce, _maxJumpForce, t); _audioSource.Stop(); } if (transform.position.y < _killY) { GameController._Instance.Reset(); } if (transform.position.x > 30f && _musicStarted == false) { _musicStarted = true; _musicSource.Play(); } }