有一种方法可以通过在屏幕上滑动手指来将对象放置在表面上(感谢@ryemoss在此处的回答)
现在的问题是如何避免将对象放在彼此之上——我们如何检查手指是否正在触摸已经存在对象实例的区域,并且仅在该区域为空时才放置新对象?
我正在寻找的答案应该包括在需要时使对象重叠的可能性(触摸彼此的边界)。
以下是 SDK 中 Unity Samples 的片段(在此处查看),用于检查在触摸事件期间是否触摸了现有放置的标记(游戏对象):
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))