2016-06-13 51 views
0

所以,我不習慣光線投射,這是我第一次使用它。基本上我試圖用它來模仿鼠標點擊,因爲這個程序是用於觸摸屏的,UI元素不是一個選項。該代碼附加到世界上的3D遊戲對象中,當我點擊觸摸屏時,我會看到它,我需要它來觸發並加載不同的場景。然而,代碼似乎總是被解僱,即使覆蓋UI元素,無論我在哪裏點擊。大多數人似乎沒有遇到光線投射問題,但我遇到了相反的問題。任何幫助,將不勝感激。光線投射總是擊中

void Update(){ 
foreach (Touch touch in Input.touches) { 
     if (touch.phase == TouchPhase.Began) { 
      Ray ray = Camera.main.ScreenPointToRay (touch.position); 
      RaycastHit hit; 
      if (Physics.Raycast (ray, out hit)) { 
       if (hit.collider.gameObject) 
       SceneManager.LoadScene (buttonIdentifier); 
      } 
     } 
    } 

}

+0

你的問題甚至沒有描述你的問題。你想檢測點擊精靈?在畫布上的圖像?在3D網格上?目前發生了什麼,你不喜歡? – Programmer

+0

我編輯它,並希望澄清它。 – MechaScoots

+0

我提供了一個答案。它有用嗎? – Programmer

回答

1

甚至壓倒一切的UI元素,不管我在哪裏挖掘。

此問題及其他問題可以通過而不是使用raycast解決。只需執行IPointerClickHandler並覆蓋OnPointerClick函數。之後,將PhysicsRaycaster附加到相機。

下面的代碼將爲您做所有這些包括附加PhysicsRaycaster。只需將腳本附加到想要檢測點擊的3D對象,就是這樣。

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 
using UnityEngine.EventSystems; 
using UnityEngine.SceneManagement; 

public class Clicker : MonoBehaviour, IPointerClickHandler 
{ 

    void Start() 
    { 
     Camera.main.gameObject.AddComponent<PhysicsRaycaster>(); 
    } 

    public void OnPointerClick(PointerEventData eventData) 
    { 

     Debug.Log("Clicked!"); 
     SceneManager.LoadScene(buttonIdentifier); 
    } 
}