質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1956閲覧

unityでprefab化したオブジェクトにRayCastがうまく作用しない。

Nanmotsu

総合スコア22

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2020/05/19 21:07

編集2020/05/21 20:39

unityで図形の「型はめゲーム」を作っています。
図形でマウスをクリック&ドラッグで動かし、ゴール近くまでいくと、位置を自動調節するコードを書きましたが、うまく動きません。
エラー表示などないので、どこが悪いのかわからない状態ですので、ご教授お願い致します。

以下prefabオブジェクト側のスクリプト 修正版

C#

1 if (Input.GetMouseButton(0)) 2 { 3 Debug.Log("2"); 4 screenPoint = Camera.main.WorldToScreenPoint(transform.position); 5 Ray ray = new Ray(); 6 Debug.Log("3"); 7 RaycastHit hit = new RaycastHit(); 8 ray = Camera.main.ScreenPointToRay(Input.mousePosition); 9 Debug.Log("4"); 10 Debug.DrawRay(ray.origin, ray.direction, Color.red); 11 12 if (Physics.Raycast(ray.origin, ray.direction, out hit, Mathf.Infinity)) 13 { 14 //以降が動かない。 15 16

ray可視化画像(赤色がrayです)

イメージ説明

rayをぶつけるオブジェクトをprefab化する前はうまく動いていました。
それも要因かもしれません。。

Rayが当たる予定のオブジェクトのインスペクターです。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2020/05/21 08:41 編集

(修正:こちらが見間違えていました、申し訳無いです)
Nanmotsu

2020/05/20 20:52

ご回答ありがとうございます。 デバッグログは押している間、繰り返されているので、押した瞬間のみというわけではなさそうです。。。
hogefugapiyo

2020/05/21 00:55

オブジェクト(Rayが当たる予定のオブジェクト)のInspectorとかも見せてもらえたりしますか?
Nanmotsu

2020/05/21 20:40

わかりました。 質問内容を編集いたしました。
guest

回答2

0

ベストアンサー

※prefab化する前は動いていたということなので、違ったら申し訳ありません

PolygonCollider2DにRaycastを当てる場合、Physics.Raycastではなく、Physics2D.Raycastを利用する様に変更したら改善しないでしょうか。

c#

1//if (Physics.Raycast(ray.origin, ray.direction, out hit, Mathf.Infinity)) 2 3//↓以下に変更 4if (Physics2D.Raycast(ray.origin, ray.direction, Mathf.Infinity)) 5

Raycastを2Dで使う

投稿2020/05/22 01:14

編集2020/05/22 01:30
tsuki01

総合スコア1751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nanmotsu

2020/05/22 04:16

ありがとうございます。解決しました。なぜ動かなかったのかはいまいちわかりませんが。。。。
guest

0

回答してくださった方の、リンクを参考にして、以下のように書き換えると解決しました。

C#

1if (Input.GetMouseButton(0)) 2 { 3 Debug.Log("2"); 4 screenPoint = Camera.main.WorldToScreenPoint(transform.position); 5 Ray ray = new Ray(); 6 Debug.Log("3"); 7 //RaycastHit hit = new RaycastHit(); 8 ray = Camera.main.ScreenPointToRay(Input.mousePosition); 9 Debug.Log("4"); 10 Debug.DrawRay(ray.origin, ray.direction, Color.red); 11 12 RaycastHit2D hit = Physics2D.Raycast((Vector2)ray.origin, (Vector2)ray.direction, Mathf.Infinity); 13 //if (Physics.Raycast(ray.origin, ray.direction, out hit, Mathf.Infinity)) 14 { 15 //以降が動かない。

投稿2020/05/22 04:16

編集2020/05/22 12:08
Nanmotsu

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問