0

我正在为 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"){

有谁能够帮我 ?

提前致谢。

4

1 回答 1

0

在谈论“我无法让它工作”时,你必须更加清楚。你得到什么错误?你试过什么?另外,下一次,将您的编程语言发布为标签。

要获得用于命中测试的触摸位置和射线,请尝试以下操作:

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.

  1. 射线,或您要检查的线。
  2. 你的输出,hit.
  3. 你的射线的长度,或者你的线。

我不确定您hit的使用是否正确。可以肯定的是,为什么不在 hittest 之前实例化一个变量呢?

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

最后但并非最不重要的一点是长度或光线。那有必要吗?在上面的示例中,我完全忽略了变量。很有可能您移动了相机,因此您的对象现在距离 1000 多个单位。

于 2013-05-29T13:28:04.117 回答