Как получить положение зависшей вершины в мировом пространстве?

#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. Спасибо за ответ! Я попробую!