46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
using UnityEngine;
|
|
using System;
|
|
|
|
namespace HQFPSWeapons
|
|
{
|
|
[Serializable]
|
|
public class RecoilForce
|
|
{
|
|
public Vector3 RotForce;
|
|
public Vector3 PosForce;
|
|
|
|
[Range(0, 20)]
|
|
public int Distribution;
|
|
|
|
[Space]
|
|
|
|
[Tooltip("max randomness for each axis")]
|
|
[Group]
|
|
public ForceJitter JitterForce;
|
|
|
|
|
|
public void PlayRecoilForce(float forceMultiplier, Spring rotSpring = null, Spring posSpring = null)
|
|
{
|
|
if (posSpring != null)
|
|
posSpring.AddForce(Vector3Utils.JitterVector(PosForce / 100, JitterForce.xJitter, JitterForce.yJitter, JitterForce.zJitter) * forceMultiplier, Distribution);
|
|
|
|
if (rotSpring != null)
|
|
rotSpring.AddForce(Vector3Utils.JitterVector(RotForce, JitterForce.xJitter, JitterForce.yJitter, JitterForce.zJitter) * forceMultiplier, Distribution);
|
|
}
|
|
|
|
[Serializable]
|
|
public struct ForceJitter
|
|
{
|
|
[Range(0,1)]
|
|
public float xJitter;
|
|
|
|
[Range(0, 1)]
|
|
public float yJitter;
|
|
|
|
[Range(0, 1)]
|
|
public float zJitter;
|
|
}
|
|
}
|
|
}
|
|
|