前提・実現したいこと
マウスでクリックした所にあるオブジェクトを取得したいです。
発生している問題・エラーメッセージ
下記のコードを使ってRayを飛ばしてRayにぶつかったオブジェクトを取得しようとしたのですが、うまく取得できません。
マウスでクリックしたScene上のオブジェクトを取得してログに出力したつもりなのですが、クリックした場所のものとは違うオブジェクトが出力されてしまいます。
具体的には、今ゲームの画面がこの画像のようになっているのですが
マウスで木や岩のオブジェクトをクリックしても、何故か画面真ん中のキャラクターのオブジェクトが出力されてしまいます。
もちろん木や岩のオブジェクトにColliderはアタッチされています。
ですが、いくら木や岩や地面などをクリックしても、ログには真ん中のキャラクターが出力されます。
そして、画面左下にジョイスティックがあり右下にボタンがありますが、これらのUI越しにオブジェクトをクリックした時(UIをクリックした時)だけは、UI越しにあるオブジェクトが出力されます。
Rayを使うのは初めてで、このような挙動になる原因がわかりません。
原因がわかる方がいたら教えて下さい。
Rayを可視化して見たのですが、Rayはしっかりマウスポインタの場所に向かって伸びていました。
該当のソースコード
void LateUpdate() { RaycastHit hit; Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit, 10)) { if (Input.GetMouseButtonDown(0)) { Debug.Log(hit.collider.gameObject); } } Debug.DrawRay(ray.origin, ray.direction * 10, Color.red, 0.5f, false); }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/26 08:53