Files
dungeons/Assets/HurricaneVR/Framework/Scripts/Weapons/Guns/HVRGunEmitterBase.cs

53 lines
1.5 KiB
C#

using HurricaneVR.Framework.Core.Utils;
using HurricaneVR.Framework.Shared.Utilities;
using UnityEngine;
namespace HurricaneVR.Framework.Weapons.Guns
{
public abstract class HVRGunEmitterBase : MonoBehaviour
{
public float LaunchRadius = .05f;
public float MinVelocity = 4f;
public float MaxVelocity = 6f;
public Vector3 MinAngularVelocity = new Vector3(0f, 8f, 0f);
public Vector3 MaxAngularVelocity = new Vector3(0f, 10f, 0f);
public HVRGunBase Gun;
public GameObject Prefab;
protected virtual void Awake()
{
}
public virtual void Emit()
{
}
public virtual void Launch(Rigidbody rb)
{
if (!rb)
return;
rb.velocity = Vector3.zero;
rb.angularVelocity = Vector3.zero;
rb.transform.position = transform.position;
rb.transform.rotation = transform.rotation;
var xy = Random.insideUnitCircle * LaunchRadius;
var launchDirection = transform.right + new Vector3(0f, xy.x, xy.y);
rb.velocity = launchDirection * Random.Range(MinVelocity, MaxVelocity);
rb.AddRelativeTorque(
Random.Range(MinAngularVelocity.x, MaxAngularVelocity.x),
Random.Range(MinAngularVelocity.y, MaxAngularVelocity.y),
Random.Range(MinAngularVelocity.z, MaxAngularVelocity.z),
ForceMode.VelocityChange
);
}
}
}