有些GameObjects无法触及

时间:2013-05-29 13:18:38

标签: unity3d

我正在为iPhone和Android开发游戏,我有不同的GameObjects和GUITexture,我已经为所有对象编写了触摸事件代码,一切都运行良好。但在更改后,我的主摄像头角度对象和GUITexture'位于屏幕一角的对象和GUITexture's触摸方法未调用。我发现如果我把那个物体放到屏幕的中间,那么它的触摸事件就能正常工作。

对于触摸,我使用了以下代码:

ray = Camera.main.ScreenPointToRay(Input.mousePosition); //I can't get touch.position to work

    if(Input.GetMouseButtonUp(0)){

       if(Physics.Raycast(ray,hit,1000)){

            if(hit.collider.gameObject.name == "Sound"){

任何人都可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在谈论'我无法让它工作时,你必须更清楚。你得到了什么错误?你有什么尝试?此外,下次将您的编程语言发布为标记。

要获得触摸位置和光线与hittesting一起使用,请尝试以下操作:

if(Input.touches.Count > 0)
{
    ray = Camera.main.ScreenPointToRay(Input.touches[0].position);
    // do stuff ...
}
else
{
    Debug.Log("No touches available");
}

Input.touches返回一个对象列表,表示最后一帧中所有触摸的状态。每个条目表示手指触摸屏幕的状态。

至于你的hittest,你的Physics.Raycast中有3个参数。

  1. Ray,或您要检查的行。
  2. 您的输出hit
  3. 光线的长度或线条。
  4. 我不确定您的hit是否正确使用。可以肯定的是,为什么不在hittest之前实例化变量?

    RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
            // do stuff ...
    

    最后但并非最不重要的是,长度或你的光线。这有必要吗?在上面的示例中,我将变量全部保留。很有可能你移动你的相机,所以你的物体现在超过1000个单位。