using UnityEngine; namespace UltimateWater.Samples { public class Throw : MonoBehaviour { [SerializeField] private GameObject _Object; [SerializeField] private float _Force = 1f; [Range(0f, 1f)] [SerializeField] private float _Angle = 1f; private void Update() { if (Input.GetKeyDown(KeyCode.F)) { Act(); } } private void Act() { GameObject gameObject = Object.Instantiate(_Object); gameObject.transform.position = base.transform.position; Rigidbody component = gameObject.GetComponent(); Vector3 vector = RandomVector(0.1f); Vector3 torque = RandomVector(_Force); component.AddForce((Vector3.Lerp(base.transform.forward, base.transform.up, 1f - _Angle) + vector) * _Force, ForceMode.Impulse); component.AddTorque(torque, ForceMode.Impulse); } private Vector3 RandomVector(float range) { return new Vector3(Random.Range(0f - range, range), Random.Range(0f - range, range), Random.Range(0f - range, range)); } } }