public static void Cone(Vector3 position, Vector3 direction, Color color, float angle = 45f, float duration = 0f, bool depthTest = true) { float single; float single1 = direction.magnitude; Vector3 vector3 = direction; Vector3 vector31 = Vector3.Slerp(vector3, -vector3, 0.5f); Vector3 vector32 = Vector3.Cross(vector3, vector31); Vector3 vector33 = vector32.normalized * single1; direction = direction.normalized; Vector3 vector34 = Vector3.Slerp(vector3, vector31, angle / 90f); Plane plane = new Plane(-direction, position + vector3); Ray ray = new Ray(position, vector34); plane.Raycast(ray, out single); Debug.DrawRay(position, vector34.normalized * single, color); vector32 = Vector3.Slerp(vector3, -vector31, angle / 90f); Debug.DrawRay(position, vector32.normalized * single, color, duration, depthTest); vector32 = Vector3.Slerp(vector3, vector33, angle / 90f); Debug.DrawRay(position, vector32.normalized * single, color, duration, depthTest); vector32 = Vector3.Slerp(vector3, -vector33, angle / 90f); Debug.DrawRay(position, vector32.normalized * single, color, duration, depthTest); Vector3 vector35 = position + vector3; vector32 = vector3 - (vector34.normalized * single); DebugDraw.Circle(vector35, direction, color, vector32.magnitude, duration, depthTest); Vector3 vector36 = position + (vector3 * 0.5f); vector32 = (vector3 * 0.5f) - (vector34.normalized * (single * 0.5f)); DebugDraw.Circle(vector36, direction, color, vector32.magnitude, duration, depthTest); }
public static void Cylinder(Vector3 start, Vector3 end, Color color, float radius = 1f, float duration = 0f, bool depthTest = true) { Vector3 vector3 = end - start; Vector3 vector31 = vector3.normalized * radius; Vector3 vector32 = Vector3.Slerp(vector31, -vector31, 0.5f); vector3 = Vector3.Cross(vector31, vector32); Vector3 vector33 = vector3.normalized * radius; DebugDraw.Circle(start, vector31, color, radius, duration, depthTest); DebugDraw.Circle(end, -vector31, color, radius, duration, depthTest); DebugDraw.Circle((start + end) * 0.5f, vector31, color, radius, duration, depthTest); Debug.DrawLine(start + vector33, end + vector33, color, duration, depthTest); Debug.DrawLine(start - vector33, end - vector33, color, duration, depthTest); Debug.DrawLine(start + vector32, end + vector32, color, duration, depthTest); Debug.DrawLine(start - vector32, end - vector32, color, duration, depthTest); Debug.DrawLine(start - vector33, start + vector33, color, duration, depthTest); Debug.DrawLine(start - vector32, start + vector32, color, duration, depthTest); Debug.DrawLine(end - vector33, end + vector33, color, duration, depthTest); Debug.DrawLine(end - vector32, end + vector32, color, duration, depthTest); }
public static void Capsule(Vector3 start, Vector3 end, Color color, float radius = 1f, float duration = 0f, bool depthTest = true) { Vector3 vector3 = end - start; Vector3 vector31 = vector3.normalized * radius; Vector3 vector32 = Vector3.Slerp(vector31, -vector31, 0.5f); vector3 = Vector3.Cross(vector31, vector32); Vector3 vector33 = vector3.normalized * radius; vector3 = start - end; float single = vector3.magnitude; float single1 = Mathf.Max(0f, single * 0.5f - radius); Vector3 vector34 = (end + start) * 0.5f; vector3 = start - vector34; start = vector34 + (vector3.normalized * single1); vector3 = end - vector34; end = vector34 + (vector3.normalized * single1); DebugDraw.Circle(start, vector31, color, radius, duration, depthTest); DebugDraw.Circle(end, -vector31, color, radius, duration, depthTest); Debug.DrawLine(start + vector33, end + vector33, color, duration, depthTest); Debug.DrawLine(start - vector33, end - vector33, color, duration, depthTest); Debug.DrawLine(start + vector32, end + vector32, color, duration, depthTest); Debug.DrawLine(start - vector32, end - vector32, color, duration, depthTest); for (int i = 1; i < 26; i++) { Debug.DrawLine(Vector3.Slerp(vector33, -vector31, (float)i / 25f) + start, Vector3.Slerp(vector33, -vector31, (float)(i - 1) / 25f) + start, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(-vector33, -vector31, (float)i / 25f) + start, Vector3.Slerp(-vector33, -vector31, (float)(i - 1) / 25f) + start, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(vector32, -vector31, (float)i / 25f) + start, Vector3.Slerp(vector32, -vector31, (float)(i - 1) / 25f) + start, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(-vector32, -vector31, (float)i / 25f) + start, Vector3.Slerp(-vector32, -vector31, (float)(i - 1) / 25f) + start, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(vector33, vector31, (float)i / 25f) + end, Vector3.Slerp(vector33, vector31, (float)(i - 1) / 25f) + end, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(-vector33, vector31, (float)i / 25f) + end, Vector3.Slerp(-vector33, vector31, (float)(i - 1) / 25f) + end, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(vector32, vector31, (float)i / 25f) + end, Vector3.Slerp(vector32, vector31, (float)(i - 1) / 25f) + end, color, duration, depthTest); Debug.DrawLine(Vector3.Slerp(-vector32, vector31, (float)i / 25f) + end, Vector3.Slerp(-vector32, vector31, (float)(i - 1) / 25f) + end, color, duration, depthTest); } }
public static void Normal(Vector3 point, Vector3 normal, float size, Color color, float duration = 0f, bool depthtest = true) { DebugDraw.Line(point, point + (normal.normalized * size), color, duration, depthtest); DebugDraw.Circle(point, normal.normalized, color, size * 0.5f, duration, depthtest); }
public static void Circle(Vector3 position, float radius = 1f, float duration = 0f, bool depthTest = true) { DebugDraw.Circle(position, Vector3.up, Color.white, radius, duration, depthTest); }