private void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = new Ray(transform.position, Vector3.forward); if (Physics.Raycast(ray, out RaycastHit hitInfo)) { if (hitInfo.collider.TryGetComponent(out Block block)) { _rigidbody.isKinematic = false; _rigidbody.velocity = Vector3.zero; } else if (hitInfo.collider.TryGetComponent(out Segment segment)) { _rigidbody.isKinematic = true; _rigidbody.velocity = Vector3.zero; } else if (hitInfo.collider.TryGetComponent(out Finish finish)) { _rigidbody.isKinematic = true; _rigidbody.velocity = Vector3.zero; FinishBlock?.Invoke(); } } } if (Input.GetMouseButton(0)) { if (_currentStick == null && _rigidbody.isKinematic == true) { _power = 0; _currentStick = CreateStick(); } _power += Time.deltaTime; _power = Mathf.Clamp(_power, 0f, 1f); if (_currentStick != null) { _currentStick.UpdateBlend(_power); } } if (Input.GetMouseButtonUp(0)) { transform.parent = null; if (_currentStick != null) { _rigidbody.isKinematic = false; _rigidbody.AddForce(Vector3.up * _jumpForce * _power, ForceMode.Impulse); Destroy(_currentStick.gameObject); } _currentStick = null; transform.rotation = Quaternion.identity;// new Quaternion(0, 0, 0, 0); transform.position = new Vector3(transform.position.x, transform.position.y, -4f); } }