2017-01-31 1 views
3

私はUnity3Dを初めて使用しています。 (床、壁4つのメッシュプレーン用のメッシュ面)部屋を作るUnity3Dはマウスイベントとの衝突を防ぎます

  1. プレハブ:私は、オブジェクトの数からなるシーンを有しています。これらのそれぞれは、シリンダ(テーブルベースの場合)、テーブルトップのための立方体からなるIテーブルを作成プレハブ室内UI要素

  2. の数と噛み合う衝突

  3. キャンバスを有します、それを唇にするためにテーブルトップの端の周りに壁を作り出す4つの立方体、そしてテーブルの上には平面(これはテーブル "感じ"で、箱の衝突者と剛体があります)です。これらはすべてCollidersを持っています。これはすべてプレハブに作られています。

  4. テーブルトップには、いくつかのプレハブキューブ(ダイス)があります。これらは剛体と衝突者を持っています。

私が抱えている問題は、マウスイベントがダイスに登録されていないことです(スクリプトが添付されています)。更新イベントで、私はこのコードを持っている:

if (Input.GetMouseButtonDown(0)) 
     { 
      Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
      RaycastHit hit; 
      if (Physics.Raycast(ray, out hit)) 
      { 
       Debug.Log("Name = " + hit.collider.name); 
       Debug.Log("Tag = " + hit.collider.tag); 
       Debug.Log("Hit Point = " + hit.point); 
       Debug.Log("Object position = " + hit.collider.gameObject.transform.position); 
       Debug.Log("--------------"); 
      } 
     } 

私はサイコロをクリックしていても、他のオブジェクトは、すなわち(方法で、部屋の壁を取得し、テーブルの壁、テーブルされていることがわかります。トップなど)。

どうすればいいですか? UI要素以外に、マウスイベントを必要とするオブジェクトだけがダイスです。他のすべてに対してマウスイベントを登録しない方法はありますか?ああ、私はC#でこれを書いています。これは3Dプロジェクトです。

おかげ

here you can see the result of clicking on the dice. It registers the TableBase. If I move the dice up, away from the table, where the back wall is behind the dice, then the back wall will be registered

+0

何がブロックされているのスクリーンショットがありますか?それは助けになるだろう。 – Programmer

+0

はい、私は、サイコロのonclickイベントを「ブロックしている」すべてのアイテムが本当に背中にあるものだと付け加えるべきです。サイコロはすべての前に座っています – jason

+0

あなたの 'Raycast'が意図したとおりにキャスティングされていることは確かですか?あなたはすでにこれについて知っている可能性があります:https://docs.unity3d.com/ScriptReference/Debug.DrawRay.html - レイキャストをデバッグするのにいつも便利です。 – Zze

答えて

1

は異なる層の上にサイコロを入れて、あなたのレイキャストでlayermask使用しています。 ここにはdocumentation.

関連する問題