是否可以查看Vector3
是否在Scene
的查看区域内,而不是在对象的另一侧(也就是相机不可见的对象)?所以,例如:
public void OnSceneGUI(){
Handles.color = Color.red;
Camera camera = Camera.current;
foreach(Vector3 handle in handles){
Vector3 point = camera.WorldToViewportPoint(handle);
if(point.x > 0 && point.x < 1 && point.y > 0 && point.y < 1){
RaycastHit hit;
Vector3 fwd = camera.transform.TransformDirection(handle);
if (Physics.Raycast(camera.transform.position, fwd, out hit)){
Debug.Log("here");
//if(Vector3.Distance(camera.transform.position, handle);
Handles.FreeMoveHandle(handle, Quaternion.identity, 0.001f, Vector3.zero, Handles.DotCap);
}
}
}
}
这将检查矢量3是否在视图中,但它还包括位于同一对象另一侧的东西。
答案 0 :(得分:0)
是的!至少有一种简单的方法,也许是两种方式!
你可以使用Raycast。为了让Raycast工作,你需要一个遮挡对象来获得某种类型的碰撞器(Mesh,Box,Collider2D等)。 然后使用相机中的Raycast到Vector3。如果碰到两者之间的任何东西,你就会发生碰撞。 http://docs.unity3d.com/ScriptReference/Physics.Raycast.html
如果在Vector3位置有一个对象,您也可以使用Renderer.IsVisible。这适用于非常小的物体。不知道如何使用部分可见的网格。
&#34; http://docs.unity3d.com/ScriptReference/Renderer-isVisible.html