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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

1回答

2469閲覧

【Unity】Raycastの判定が二本出てきてしまっている

Gurumer

総合スコア33

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2020/03/16 04:30

編集2020/03/16 06:12

前提・実現したいこと

不自然に増えたRaycastの判定を一つにしたい。
このようになった原因を探りたい。

発生している問題・エラーメッセージ

Raycastの判定は完成しているのですが、
完成したスクリプトを実際に3Dモデルの方に
移動させてみたところ、なぜか判定の線が2本出てしまいました。

現状↓
イメージ説明
(表示している赤い線はRaycastの判定を見やすくする為、Debugで表示しています)

また、この画像だとわかりずらいと思うのですが、
下にある二本目の線はゆっくりと下に落ちていっています。

Hierarchy↓
イメージ説明
(LookYというのは、実際にゲーム上ではマウスの動きをカメラの上下左右の振り向きに使用している為、その振り向きでの上下に当たる動作をモデルの角度に影響させない様入れているものです。)

該当のソースコード

Raycastのスクリプト

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine.UI; 4using UnityEngine; 5 6public class raycast : MonoBehaviour 7{ 8 public GameObject TextObj; 9 public Text ReacText; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 Vector3 center = new Vector3(Screen.width / 2, Screen.height / 2); 21 Ray ray = Camera.main.ScreenPointToRay(center); 22 RaycastHit hit; 23 if (Physics.Raycast(ray, out hit, 3.0f)) 24 { 25 Debug.Log(hit.collider.gameObject.transform.position); 26 switch (hit.collider.gameObject.tag) 27 { 28 case "Button": 29 ReacText.text = "ボタンを押す"; 30 TextObj.SetActive(true); 31 break; 32 case "Report": 33 ReacText.text = "レポートを調べる"; 34 TextObj.SetActive(true); 35 break; 36 default: 37 break; 38 } 39 }else 40 { 41 TextObj.SetActive(false); 42 } 43 Debug.DrawRay(ray.origin, ray.direction * 3, Color.red, 5); 44 } 45}

試したこと

いろいろRaycastについて調べてみたのですが、
このような状態になったページが見当たりませんでした。。
(調べ不足かもしれないですが...)

またRaycastの線の移動的に下に落ちていっているので、何かしらのオブジェクトが
落ちているのではないかの思ったのですが、落ちている様な動作を示すものは
ありませんでした。

補足情報(FW/ツールのバージョンなど)

Unity 2019.1.0f2

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

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

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

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

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

Y0241-N

2020/03/16 05:23

このスクリプト自体にレイを二本出す処理はないので、一番考えられるのは同じスクリプトが別のオブジェクトにアタッチされている事なので、シーン再生中にこのスクリプト名「raycast」をHiearchyの検索ボックスに入れて検索してみてください。
Gurumer

2020/03/16 05:42

検索してみたのですが、Raycastのスクリプトが入っているのはこの3Dモデルしかないですね。。
Gurumer

2020/03/16 05:48

ちなみに、3Dモデルではなくカプセル型のオブジェクトに同じようにやってみると、しっかりと動きます。二本出てくることはありませんでした。 また、感覚の違いかもしれないのですが、Raycastの判定頻度をカプセル型と3Dモデルとで比べてみたのですが、3Dモデルの方が判定頻度が少なく、雑な印象が見られました。。もしかしたらなのですが、通常の判定回数が二本に分散してしまっているのでは...と思うのですがどうなんでしょう....
Y0241-N

2020/03/16 06:29

うーんなるほど、であれば可能性として考えられるのは、3Dキャラの正面方向の定義が何か変になっているかもしれないですね。 Rayの線を引く方向の定義の部分をforwardやほかの物に変えてみたらどうなるか試してみましょう。
Gurumer

2020/03/16 06:48

Physics.Raycast(center,Vector3.forward, out hit, 3.0f) Raycastの部分をこのように変えてみたのですが、 変化なしですね....
Y0241-N

2020/03/16 07:15

ちなみにこのスクリプトは度のオブジェクトにアタッチされているんでしょうか? こうなるともう他のスクリプトが影響を及ぼしているとしか思えないので、有効無効を切りかえてどれが悪さをしているのか調べるほかないかと...
Gurumer

2020/03/16 07:24

このraycastスクリプトは上のHierarchyだとBasic motions dummyに入っています。
guest

回答1

0

Raycastスクリプトが必要のないところにアタッチされているのではないですか?

投稿2020/04/10 05:17

leeee1019

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問