1

有一种方法可以通过在屏幕上滑动手指来将对象放置在表面上(感谢@ryemoss在此处的回答)

现在的问题是如何避免将对象放在彼此之上——我们如何检查手指是否正在触摸已经存在对象实例的区域,并且仅在该区域为空时才放置新对象?

我正在寻找的答案应该包括在需要时使对象重叠的可能性(触摸彼此的边界)。

4

1 回答 1

0

以下是 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))
于 2017-07-29T09:54:11.960 回答