2013-05-29 29 views
0

我正在开发iPhone和Android游戏,并且我有不同的GameObjects和GUITexture,我已经为所有对象编写触摸事件的代码,并且一切都很完美。但在改变我的主摄像机角度的一些对象和GUITexture'这是在屏幕的角落对象和GUITexture's触摸方法不能调用。我发现如果我把这个对象放到屏幕的中间,那么它的触摸事件工作正常。一些GameObjects不能触摸

对于触摸我用波纹管代码:

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"){ 

任何人可以帮助我吗?

在此先感谢。

回答

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返回表示所有触摸的最后一帧中的状态对象的列表。每个条目表示手指触摸屏幕的状态。

至于你的命中,你有3个参数在你的Physics.Raycast

  1. Ray或您想查看的行。您的输出,hit
  2. 你的光线或你的线条的长度。

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

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

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