summaryrefslogtreecommitdiff
path: root/Recoil.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Recoil.cs')
-rw-r--r--Recoil.cs64
1 files changed, 64 insertions, 0 deletions
diff --git a/Recoil.cs b/Recoil.cs
new file mode 100644
index 0000000..ee047f1
--- /dev/null
+++ b/Recoil.cs
@@ -0,0 +1,64 @@
+using UnityEngine;
+
+public class Recoil : MonoBehaviour
+{
+ public float ADSMovementMultiplier = 0.5f;
+
+ [Header("")]
+ public Vector3 gunForce;
+
+ public Vector3 gunForceRandom;
+
+ [Header("")]
+ public Vector3 gunTorque;
+
+ public Vector3 gunTorqueRandom;
+
+ [Header("")]
+ private Rigidbody rig;
+
+ [Header("")]
+ public Vector2 recoil;
+
+ public Vector2 randomRecoil;
+
+ public AnimationCurve recoilCurve;
+
+ private CameraRecoil cameraRecoil;
+
+ private HoldableObject holdableObject;
+
+ private ADS ads;
+
+ private void Start()
+ {
+ rig = GetComponent<Rigidbody>();
+ holdableObject = GetComponent<HoldableObject>();
+ ads = GetComponentInChildren<ADS>();
+ }
+
+ private void Update()
+ {
+ if (!holdableObject.isHeld && (bool)cameraRecoil)
+ {
+ cameraRecoil = null;
+ }
+ }
+
+ public void AddRecoil(bool ADS)
+ {
+ if (!cameraRecoil)
+ {
+ cameraRecoil = holdableObject.holder.GetComponentInChildren<CameraRecoil>();
+ }
+ ads.PlayRecoilAnimation();
+ cameraRecoil.AddRecoil(recoil + new Vector2(Random.Range(0f - randomRecoil.x, randomRecoil.x), Random.Range(0f - randomRecoil.y, randomRecoil.y)), recoilCurve);
+ float num = 1f;
+ if (ADS)
+ {
+ num = ADSMovementMultiplier;
+ }
+ rig.AddForce(base.transform.TransformDirection(gunForce + new Vector3(Random.Range(0f - gunForceRandom.x, gunForceRandom.x), Random.Range(0f - gunForceRandom.y, gunForceRandom.y), Random.Range(0f - gunForceRandom.z, gunForceRandom.z))) * num, ForceMode.VelocityChange);
+ rig.AddTorque(base.transform.TransformDirection(gunTorque + new Vector3(Random.Range(0f - gunTorqueRandom.x, gunTorqueRandom.x), Random.Range(0f - gunTorqueRandom.y, gunTorqueRandom.y), Random.Range(0f - gunTorqueRandom.z, gunTorqueRandom.z))) * num, ForceMode.VelocityChange);
+ }
+}