前提・実現したいこと
2DゲームでRaycastを使いたいのですが、ネットに載っている方法を使ってもRaycastHit2Dに代入されません。
発生している問題
下記のコードを使っても、hit.colliderがnullのままになっている。
該当のソースコード
C#
1 2Vector3 vector3 = new Vector3 3 { 4 x = Input.mousePosition.x, 5 y = Input.mousePosition.y, 6 z = 0 7 }; 8 9RaycastHit2D hit = Physics2D.Raycast(new Vector2(vector3.x, vector3.y), -Vector2.up, 500, LayerMask.GetMask(new string[] {"Line"})); //ここを色々変えました 10 Debug.DrawRay(new Vector2(vector3.x, vector3.y), -Vector2.up * 500, Color.white, 5, false); 11 vector3.y = hit.point.y; 12 13 if (hit.collider != null) Instantiate(NotesPrefab[selectedNoteType], vector3, Quaternion.identity, notesParent.transform); 14 else DisplayError("couldn't find any lines"); //elseが実行される 15
試したこと
コード中のLayerMask.GetMask(new string[] {"Line"}) をビットシフトで表現したり、NametoLayer()を使ったり、単にレイヤー番号(Lineレイヤーは8番)を書いたりしましたが、いずれもダメでした。
DrawRayも表示されませんでした。こちらはVector3型なので、ScreenToWorldPointなどを使う必要があるのでしょうか。
補足情報(FW/ツールのバージョンなど)
Unity 2019.4.11f1
Visual Studio for Mac 8.7.8
追記です。そもそもDrawRayが思うように動かないようです。
Vector3 rayStart = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Debug.DrawRay(rayStart, new Vector3(0, -100, 0), Color.white, 10, false);
これを実行しても、線が描画されていないようです。
回答1件
あなたの回答
tips
プレビュー