From 6ce8b9e22fc13be34b442c7b6af48b42cd44275a Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Wed, 13 Mar 2024 11:00:58 +0800 Subject: +init --- Recoil.cs | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Recoil.cs (limited to 'Recoil.cs') 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(); + holdableObject = GetComponent(); + ads = GetComponentInChildren(); + } + + private void Update() + { + if (!holdableObject.isHeld && (bool)cameraRecoil) + { + cameraRecoil = null; + } + } + + public void AddRecoil(bool ADS) + { + if (!cameraRecoil) + { + cameraRecoil = holdableObject.holder.GetComponentInChildren(); + } + 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); + } +} -- cgit v1.1-26-g67d0