问题描述
我正在使用编辑器工具,但是有问题。
如果我在SceneView中用鼠标悬停在网格顶点上,如何获得其在世界空间中的位置?
解决方法
在编辑脚本中,您需要从当前鼠标位置发出光线,通过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;
}
}
}