42 lines
1002 B
C#
42 lines
1002 B
C#
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<Rigidbody>();
|
|
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));
|
|
}
|
|
}
|
|
}
|