- Home /
Trouble calculating Arc offset position
Hello everybody :)
I am trying to create an angle arc, to help me visualize things better in the scene view. Unfortunately, I got myself stuck..
I use
Handles.DrawSolidArc(Vector3 center, Vector3 normal, Vector3 from, float angle, float radius);
to draw an arc using an angle I specify in the inspector.
Currently for from vector I use transform.forward, but it gives me this result:
How do I offset the vector to get this type of result instead?
In this example angle is 90 degrees, but I can specify a different angle from 0 to 180 degrees and I would like if this arc would offset to the center as this is kind of a field of view of the object.
I'm not the best when it comes to math, any help would be much appreciated! :)
void OnSceneGUI()
{
var objTransform = _reference.objectReferenceValue as Transform;
var center = new Vector3(objTransform.position.x, objTransform.position.y + 5, objTransform.position.z);
Handles.color = new Color(.5f, .5f, .5f, .25f);
Handles.DrawSolidDisc(center, Vector3.up, collider.radius);
Handles.DrawSolidArc(center, Vector3.up, objTransform.forward, _angle.floatValue, collider.radius);
Handles.color = Color.white;
}
Answer by Bunny83 · Nov 03, 2019 at 01:00 AM
You just need to rotate your start vector counter-clockwise by half the angle of your arc.
Something like this:
float angle = _angle.floatValue;
Vector3 from = Quaternion.AngleAxis(angle * 0.5f, Vector3.up) * objTransform.forward;
Handles.DrawSolidArc(center, Vector3.up, from, angle, collider.radius);
Currently I can't test this code. Maybe the angle need to be negative:
Vector3 from = Quaternion.AngleAxis(-angle * 0.5f, Vector3.up) * objTransform.forward;
Your answer
Follow this Question
Related Questions
Obtaining a perpendicular point? 1 Answer
Instantiate objects in an arc shape 1 Answer
Math help if possible, angle calculation 1 Answer
determine that the spinning motion is "CW" or "CCW" 0 Answers
Rigidbody physics - equalizing force 1 Answer