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 --- ADS.cs | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 ADS.cs (limited to 'ADS.cs') diff --git a/ADS.cs b/ADS.cs new file mode 100644 index 0000000..d20136e --- /dev/null +++ b/ADS.cs @@ -0,0 +1,49 @@ +using System.Collections; +using UnityEngine; + +public class ADS : MonoBehaviour +{ + public Vector3 recoilMovement; + + public Vector3 randomRecoilMovement; + + public AnimationCurve curve; + + public float animationSpeed = 1f; + + private Vector3 startPosition; + + private void Start() + { + startPosition = base.transform.localPosition; + } + + private void Update() + { + } + + public void PlayRecoilAnimation() + { + StartCoroutine(ApplyRecoil()); + } + + private IEnumerator ApplyRecoil() + { + float counter = 0f; + float lastValue = curve.Evaluate(0f); + float animtionTime = curve.keys[curve.length - 1].time; + Vector3 v = recoilMovement + new Vector3(Random.Range(0f - randomRecoilMovement.x, randomRecoilMovement.x), Random.Range(0f - randomRecoilMovement.y, randomRecoilMovement.y), Random.Range(0f - randomRecoilMovement.z, randomRecoilMovement.z)); + while (counter < animtionTime) + { + counter += Time.deltaTime * animationSpeed; + if (counter > animtionTime) + { + counter = animtionTime; + } + float deltaForce = curve.Evaluate(counter) - lastValue; + lastValue = curve.Evaluate(counter); + base.transform.localPosition += deltaForce * v * 0.001f; + yield return null; + } + } +} -- cgit v1.1-26-g67d0