Q&A
やりたいことはタイトルの通りですが、
Canvas以外のGameObjectはRayCastで衝突判定できるものの、
Canvas内のGameObjectは衝突判定されません。
何が原因でしょうか?
▼ヒエラルキーの状態
▼Canvasのインスペクター
▼Panelのインスペクター
▼RayCastしているソース
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class TestScript : MonoBehaviour { 6 7 void Start () { 8 9 } 10 11 void Update () { 12 if (Input.GetMouseButton(0)) { 13 Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); 14 CommonUtil.getGameObjectByRay(worldPos); 15 } 16 } 17 18 public static GameObject getGameObjectByRay(Vector3 pos) { 19 Log.d("pos", pos); 20 //メインカメラ上のマウスカーソルのある位置からRayを飛ばす 21 Ray ray = Camera.main.ScreenPointToRay(pos); 22 23 //レイヤーマスク作成 24 int layerMask = LayerMask.GetMask(new string[] {"Default"}); 25 26 //Rayの長さ 27 float maxDistance = 99999; 28 29 RaycastHit2D[] hits = Physics2D.RaycastAll(new Vector2(pos.x, pos.y), (Vector2)ray.direction, maxDistance, layerMask); 30 Log.d("hits.Length", hits.Length); 31 32 foreach (RaycastHit2D hit in hits) { 33 if (hit.collider) { 34 Log.d("★hit.collider.gameObject.name", hit.collider.gameObject.name); 35 return hit.collider.gameObject; 36 } else { 37 Log.d("★hit.collider", "判定なし"); 38 } 39 } 40 return null; 41 } 42} 43
▼環境
Unity2017 3.1f1
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2018/05/03 01:17