我有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;
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新手并不了解所有概念,所以如果有人知道我可以尝试或有解决方案,我会非常乐意倾听。谢谢。