检测Raycast是否命中了编程创建的游戏对象

时间:2017-03-10 09:24:19

标签: c# unity3d collision detection

我有4个相同大小的矩形(每个屏幕的每个象限)。我在onStart()方法中以编程方式创建它们:

Vector3 pos1 = new Vector3(Screen.width / 4, Screen.height / 4, 0);
Vector2 rectDimensions = new Vector2(Screen.width / 2, Screen.height / 2);

GameObject bottomLeftGO = new GameObject();
bottomLeftGO.transform.SetParent(mainCanvas.transform);

Image bottomLeftRect = bottomLeftGO.AddComponent<Image>();
bottomLeftRect.color = new Color(0.192F, 0.051F, 0.125F);
bottomLeftRect.rectTransform.sizeDelta = rectDimensions;
bottomLeftGO.transform.position = pos1;

目前,屏幕看起来像这样: RectangleScene

mainCanvas是我在Unity GUI中创建的预制件,并将其连接到我制作矩形的脚本。

我想在Update()方法中检测矩形上的触摸。我试过像这样使用Raycast:

if (Input.touchCount > 0)
{
    foreach (Touch touch in Input.touches)
    {
        Ray ray = Camera.main.ScreenPointToRay(touch.position);

        if (Physics.Raycast(ray, out hit, touchInputMask))
        {
            GameObject hittedObject = hit.transform.gameObject;
        }
    }
}

但条件     if(Physics.Raycast(ray,out hit)) 总是返回false。我尝试使用Input.GetMouseButton(0),所以我不需要在手机上构建.apk,但它仍然无法检测到任何命中。

我是Unity新手并不了解所有概念,所以如果有人知道我可以尝试或有解决方案,我会非常乐意倾听。谢谢。

0 个答案:

没有答案