2016-09-16 96 views
0

我使用Kudan插件Unity構建Android應用程序。我正在使用無標記模式。當我點擊(觸摸)模型,在這種無標記模式下產生時,我想要摧毀它。我正在使用下面列出的Raycast腳本。我試圖將該腳本附加到Kudan相機。此外,我創建了一個公共Camera Camera對象,並通過了Kudan Camera。然而這兩種選擇都不起作用Kudan Unity:摧毀遊戲對象

有誰知道我在做什麼錯?

public Gamobject model; 

if (Input.touchCount > 0) 
     RaycastHit hit; 

      Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (0).position); 

     if (Physics.Raycast (ray, out hit)) 
     { 
      if (hit.collider.gameObject.tag == "chair") 
      { 
       Destroy (model); 
      } 
     } 
    } 

在此先感謝!

+0

也許嘗試將射線距離設置爲某個高值以消除射線在擊中某物之前結束的情況。 –

+0

一個建議可能是用調試器遍歷代碼,這樣你就可以看到流程,或者在你的if語句上面添加一個print(「raycast命中對象:」+ hit.gameObject.name);以確定你的raycast正常工作。從那裏開始縮小問題。椅子上是否有對撞機? – ejsd1989

回答

1

假設你的實際代碼的正確性和遊戲對象,而不是Gamobject說,你的if語句有開括號等,這可能是因爲:

  • 你還沒有給你的模型中的「椅子」標籤。如果您的光線撞擊了模型,但模型沒有正確的標記,則它將被忽略。
  • Ray的射程並不夠遠(如評論中所提到的)。你沒有指定距離,理論上這應該意味着沒有最大距離,但你永遠不知道,Unity可能有一些奇怪的默認值或某些東西。
  • 您的模型沒有碰撞器。對象需要碰撞器,否則物理引擎不能註冊射線和對象之間的「碰撞」。

但實際上,一個更容易,也許更好的方法是根本不使用Raycast。如果你犯了一個方法,在腳本:

void OnMouseDown 
{ 
    Destroy(gameObject); 
} 

並附加腳本到你的模型,然後在模型上的用戶點擊(或水龍頭上移動),只要有一個對撞機,它就會被破壞。

+0

感謝您的回覆。如所建議的那樣,將射線距離設置爲高值(使用Mathf.Infinity)解決了該問題。 – Aniruddha

+0

@Aniruddha可以請你把這個答案標記爲解決了你的問題。 – MultiColourPixel