#unity3d #position #mouseevent #vertex
#unity3d #положение #mouseevent #вершина
Вопрос:
Я работаю над инструментом редактирования, и у меня проблема.
Если в режиме просмотра сцены я наведу курсор мыши на вершину сетки, как я могу получить ее положение в мировом пространстве?
Ответ №1:
В вашем редакторском скрипте вам нужно выполнить радиопередачу из текущего положения мыши, преобразовать это с помощью HandleUtility
и обработать, содержит ли hitInfo.collider
запрошенный объект.
Примечание: я не проверял, работает ли это, если у вас нет подключенного коллайдера
Это также работает только после того, как SceneView находится в фокусе (вы щелкнули по нему)
void OnSceneGUI()
{
Transform objectPreview; //the transform to move
Transform objectTouched = null; //the reference of the last object hit
Ray worldRay = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(worldRay, out hitInfo, Mathf.Infinity))
{
if (hitInfo.collider.gameObject != null)
{
objectTouched = hitInfo.collider.gameObject;
var yourPosition = objectTouched.transform.position;
}
}
}
Комментарии:
1. Спасибо за ответ! Я попробую!