如何检查手指是否触摸对象实例所在的区域?

时间:2017-07-28 14:09:32

标签: c# android unity3d google-project-tango tango

有一种方法可以通过在屏幕上滑动手指来在表面上放置物体(感谢 @ryemoss 获得答案here

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

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

1 个答案:

答案 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))