private static void DrawArrowOnCircleDeg(Vector3 centerPosition, float arrowAngleDeg, float rotationDir, float circleRadius, Vector3 up, Color wireframe, float offsetZ = -1, float arrowSize = 0.05f) { Vector3 cp = ParametricCircle.GetPointOnCircleDeg(Vector2.zero, arrowAngleDeg, circleRadius); Vector3 p = cp + centerPosition + new Vector3(0, 0, offsetZ); Vector3 dir = Mathf.Sign(rotationDir) * Vector3.Cross(up.normalized, cp.normalized); DrawArrowHead(p, dir, up, wireframe, arrowSize); }
public static void DrawCirclePartRad(Vector2 p, float startA, float endA, float r, Color lineColor, int lineResolutionForCircle = 360, float offsetZ = -1) { Gizmos.color = lineColor; float aStep = (2 * Mathf.PI) / lineResolutionForCircle; if (startA > endA) { float swap = startA; startA = endA; endA = swap; } for (float a = startA; a < endA; a += aStep) { Vector3 p1 = (Vector3)ParametricCircle.GetPointOnCircleRad(p, a, r) + new Vector3(0, 0, offsetZ); Vector3 p2 = (Vector3)ParametricCircle.GetPointOnCircleRad(p, a + aStep, r) + new Vector3(0, 0, offsetZ); Gizmos.DrawLine(p1, p2); } }