free rotate camera
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using UnityEngine;
|
||||
|
||||
public static class DebugUtilities
|
||||
{
|
||||
/// <summary>
|
||||
/// Draws a wire sphere using Debug.DrawLine for runtime visibility.
|
||||
/// </summary>
|
||||
public static void DrawWireSphere(Vector3 center, float radius, Color color, float duration, int quality = 3)
|
||||
{
|
||||
quality = Mathf.Clamp(quality, 1, 10);
|
||||
int segments = quality << 2;
|
||||
int subdivisions = quality << 3;
|
||||
int halfSegments = segments >> 1;
|
||||
float strideAngle = 360f / subdivisions;
|
||||
float segmentStride = 180f / segments;
|
||||
|
||||
Vector3 first;
|
||||
Vector3 next;
|
||||
|
||||
// Draw meridians (vertical circles)
|
||||
for (int i = 0; i < segments; i++)
|
||||
{
|
||||
first = (Vector3.forward * radius);
|
||||
first = Quaternion.AngleAxis(segmentStride * (i - halfSegments), Vector3.right) * first;
|
||||
|
||||
for (int j = 0; j < subdivisions; j++)
|
||||
{
|
||||
next = Quaternion.AngleAxis(strideAngle, Vector3.up) * first;
|
||||
Debug.DrawLine(first + center, next + center, color, duration);
|
||||
first = next;
|
||||
}
|
||||
}
|
||||
|
||||
// Draw parallels (horizontal circles)
|
||||
Vector3 axis;
|
||||
for (int i = 0; i < segments; i++)
|
||||
{
|
||||
first = (Vector3.forward * radius);
|
||||
first = Quaternion.AngleAxis(segmentStride * (i - halfSegments), Vector3.up) * first;
|
||||
axis = Quaternion.AngleAxis(90f, Vector3.up) * first;
|
||||
|
||||
for (int j = 0; j < subdivisions; j++)
|
||||
{
|
||||
next = Quaternion.AngleAxis(strideAngle, axis) * first;
|
||||
Debug.DrawLine(first + center, next + center, color, duration);
|
||||
first = next;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user