有一种方法可以通过在屏幕上滑动手指来在表面上放置物体(感谢 @ryemoss 获得答案here)
现在的问题是如何避免将对象放在彼此之上 - 我们如何检查手指是否正在触及已存在对象实例的区域,并仅放置新对象如果该区域是空的?
我正在寻找的答案应该包括在需要时使对象重叠一点的可能性(触摸彼此的边界)。
答案 0 :(得分:0)
以下是SDK中的Unity Samples的一个片段(check here),用于检查触摸事件期间是否触摸了现有的放置标记(游戏对象):
Touch t = Input.GetTouch(0);
Vector2 guiPosition = new Vector2(t.position.x, Screen.height - t.position.y);
Camera cam = Camera.main;
RaycastHit hitInfo;
if (t.phase != TouchPhase.Began)
{
return;
}
if (m_selectedRect.Contains(guiPosition))
{
// do nothing, the button will handle it
}
else if (Physics.Raycast(cam.ScreenPointToRay(t.position), out hitInfo))
{
// Found a marker, select it (so long as it isn't disappearing)!
GameObject tapped = hitInfo.collider.gameObject;
if (!tapped.GetComponent<Animation>().isPlaying)
{
m_selectedMarker = tapped.GetComponent<ARMarker>();
}
}
您需要的是由
处理if (Physics.Raycast(cam.ScreenPointToRay(t.position), out hitInfo))