From 8b1fc7063b387542803c6bc214ccf8acb32870bd Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Sun, 19 May 2024 16:46:27 +0800 Subject: * rename --- .../Decompile/RotateForwardToRVOVelocity.cs | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Thronefall_1_0/Decompile/RotateForwardToRVOVelocity.cs (limited to 'Thronefall_1_0/Decompile/RotateForwardToRVOVelocity.cs') diff --git a/Thronefall_1_0/Decompile/RotateForwardToRVOVelocity.cs b/Thronefall_1_0/Decompile/RotateForwardToRVOVelocity.cs new file mode 100644 index 0000000..3bbf35f --- /dev/null +++ b/Thronefall_1_0/Decompile/RotateForwardToRVOVelocity.cs @@ -0,0 +1,64 @@ +using UnityEngine; + +public class RotateForwardToRVOVelocity : MonoBehaviour +{ + public Transform transformToRotate; + + public PathfindMovement target; + + public AutoAttack attack; + + public float regularSmoothTime = 0.1f; + + public float attackSmoothTime = 0.05f; + + private Vector3 desiredForward; + + private Vector3 angularVelocityRef; + + private float minSqVelocity = 1.5f; + + private bool attackOverride; + + private void Start() + { + if ((bool)attack) + { + attack.onAttackTriggered.AddListener(OnAttack); + } + desiredForward = transformToRotate.forward; + } + + private void Update() + { + if ((bool)target && target.RVO.velocity.sqrMagnitude > minSqVelocity && !attackOverride) + { + desiredForward = target.RVO.velocity; + desiredForward.y = 0f; + desiredForward.Normalize(); + } + if (Vector3.Angle(transformToRotate.forward, desiredForward) > 3f) + { + if (attackOverride) + { + transformToRotate.forward = Vector3.SmoothDamp(transformToRotate.forward, desiredForward, ref angularVelocityRef, attackSmoothTime); + } + else + { + transformToRotate.forward = Vector3.SmoothDamp(transformToRotate.forward, desiredForward, ref angularVelocityRef, regularSmoothTime); + } + } + else + { + attackOverride = false; + } + } + + private void OnAttack() + { + desiredForward = attack.LastTargetPosition - transformToRotate.position; + desiredForward.y = 0f; + desiredForward.Normalize(); + attackOverride = true; + } +} -- cgit v1.1-26-g67d0