123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using UnityEngine;
- namespace HQFPSWeapons
- {
- public class MATH_UTILS
- {
- public static Vector3[] GetArchVertices(Vector3 startDirection, Vector3 endDirection, float radius, int vertexCount, Transform relativeTo = null)
- {
- startDirection.Normalize();
- endDirection.Normalize();
- vertexCount = Mathf.Clamp(vertexCount, 3, 100);
- Vector3[] vertices = new Vector3[vertexCount];
- float deltaRadians = Vector3.Angle(startDirection, endDirection) * Mathf.Deg2Rad / vertexCount;
- for(int i = 0;i < vertexCount;i ++)
- {
- vertices[i] = Vector3.RotateTowards(startDirection, endDirection, deltaRadians * i, 0f);
- if(relativeTo != null)
- vertices[i] = relativeTo.TransformVector(vertices[i]);
- }
- return vertices;
- }
- public static float GetBezier(float time)
- {
- time = Mathf.Clamp01(time);
- return (time * time) * (3f - 2 * time);
- }
- public static Vector3 GetNaNSafeVector3(Vector3 vector3)
- {
- if(float.IsNaN(vector3.x))
- vector3.x = 0f;
- if(float.IsNaN(vector3.y))
- vector3.y = 0f;
- if(float.IsNaN(vector3.z))
- vector3.z = 0f;
- return vector3;
- }
- private MATH_UTILS() {}
- }
- }
|