2016-03-25 14 views
0

私は小さな都市メッシュとアパートの3Dモデルを持っています。私は私のシーンにメッシュを追加し、メッシュ上に3dモデルを配置します。ゲームオブジェクトをマウスでクリックする - Unity3d

マウスのクリックは3Dモデルでしか処理できません。私は以下のコードを使用します。しかし、私は画面上の任意の場所をクリックすると、サウンド= trueに設定されます。

3Dモデルgameオブジェクトにメッシュコライダーを追加します。

if (Input.GetMouseButtonDown (0)) { 
      Plane p = new Plane (Camera.main.transform.forward , transform.position); 
      Ray r = Camera.main.ScreenPointToRay (Input.mousePosition); 
      float d; 
      if(p.Raycast (r, out d)) { 
       sound = true; 
} 

どうすれば解決できますか?

答えて

0

ゲームオブジェクトのタグ/名前を確認できます。次のように使用する必要があります。

void Update() 
{ 
    if (Input.GetMouseButtonDown (0)) { 

     Plane p = new Plane (Camera.main.transform.forward , transform.position); 
     Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
     RaycastHit hit; 

     if (Physics.Raycast(ray, out hit, 100)) 
     { 
      //Choose one of them below!!! 

      /// Name Comparison 
      if(hit.collider.gameObject.name.equals("NameOfTheObject")){ 
       ///Do Logic 
      } 

      //Tag Comparison 
      if(hit.collider.gameObject.CompareTag("TagOfTheObject")){ 
       ///Do Logic 
      } 
     } 
    } 
} 
+0

Plane.Raycastを使用して同じタスクを実行するにはどうすればよいですか?コライダーは必要ありません。そしてそれはヒットから成っていません。 – zumma

+0

あなたのコードから判断すると、あなたは常にあなたが打っている飛行機を作っているようです。面の値を変更してみてください –

+0

@ zumma d値は何ですか? Debug.Log(d)と書いてください。 after if文。 –

関連する問題