Я пытаюсь получить Handles.DrawWireArc
для отображения в правильной ориентации при использовании 2D-вида. Таким образом, провод и линии обращены к камере.
Благодаря магии Photoshop, это то, чего я пытаюсь достичь.
Но теперь, что бы я ни указывал в параметре normal
DrawWireArc, я не могу заставить его поворачиваться на Y так, чтобы он смотрел на камеру.
Это то, что я получаю в итоге:
При просмотре в 3D
Может кто-нибудь увидетьчто я делаю не так?
[CustomEditor(typeof(FieldOfView))]
public class FieldOfViewEditor : Editor
{
private FieldOfView _fieldOfView;
private void OnEnable()
{
_fieldOfView = (FieldOfView) target;
}
void OnSceneGUI()
{
Handles.color = Color.white;
Handles.DrawWireArc(_fieldOfView.transform.position, Vector3.left, Vector3.forward, 360, _fieldOfView.viewRadius);
Vector3 viewAngleA = DirFromAngle(_fieldOfView.transform, -_fieldOfView.viewAngle / 2, false);
Vector3 viewAngleB = DirFromAngle(_fieldOfView.transform, _fieldOfView.viewAngle / 2, false);
Handles.DrawLine(_fieldOfView.transform.position, _fieldOfView.transform.position + viewAngleA * _fieldOfView.viewRadius);
Handles.DrawLine(_fieldOfView.transform.position, _fieldOfView.transform.position + viewAngleB * _fieldOfView.viewRadius);
Handles.color = Color.red;
foreach (Transform visibleTarget in _fieldOfView.visibleTargets)
{
Handles.DrawLine(_fieldOfView.transform.position, visibleTarget.position);
}
}
public Vector3 DirFromAngle(Transform _transform, float angleInDegrees, bool angleIsGlobal)
{
if (!angleIsGlobal)
angleInDegrees += _transform.eulerAngles.y;
return new Vector3(Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), 0, Mathf.Cos(angleInDegrees * Mathf.Deg2Rad));
}
}