2013-05-29 52 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個單位了。