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

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

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

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

Unity3D

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

Unity

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

Q&A

解決済

1回答

1818閲覧

【Unity,C#】Raycastによる衝突判定が取れない

fujiki3236

総合スコア11

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2020/01/18 05:15

編集2020/01/18 05:16

#実現したいこと
Rayを飛ばして移動方向にオブジェクトが存在しないことを確認してからその方向に移動を行う。

#発生している問題
Rayの長さは6fに設定しているのに5fの距離の壁を判定せず
オブジェクトが壁をすり抜けて移動する。

#試したこと
有効かどうかはさておき、RaycastではなくSphereCastを試してみたが解決せず。

コードは以下の通りです。

C#

1Vector3 targetpos; 2 Vector3 nowpos; 3 float time; 4 5 void Start() 6 { 7 nowpos = transform.position; 8 targetpos = nowpos; 9 } 10 11 void Update() 12 { 13 time += Time.deltaTime; 14 transform.position = Vector3.Lerp(nowpos, targetpos, time); 15 16 if (time > 1.0f) 17 { 18 DirSerch(); 19 time = 0f; 20 } 21 } 22 23 void DirSerch() 24 { 25 nowpos = transform.position; 26 27 Physics.Raycast(nowpos, Vector3.up, out RaycastHit hit_up, 6f); 28 Physics.Raycast(nowpos, Vector3.right, out RaycastHit hit_right, 6f); 29 Physics.Raycast(nowpos, Vector3.down, out RaycastHit hit_down, 6f); 30 Physics.Raycast(nowpos, Vector3.left, out RaycastHit hit_left, 6f); 31 32 float value = Random.value; 33 34 if (value < 0.25f && hit_up.collider == null) 35 { 36 targetpos = nowpos + new Vector3(0, 0, 10f); 37 } 38 else if (value < 0.5f && hit_right.collider == null) 39 { 40 targetpos = nowpos + new Vector3(10f, 0, 0); 41 } 42 else if (value < 0.75f && hit_down.collider == null) 43 { 44 targetpos = nowpos + new Vector3(0, 0, -10f); 45 } 46 else if (value < 1.0f && hit_left.collider == null) 47 { 48 targetpos = nowpos + new Vector3(-10f, 0, 0); 49 } 50 }

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

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

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

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

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

guest

回答1

0

自己解決

transform.up,transform.downとtransform.forward,transform.backの
用法を間違えていたためでした

投稿2020/01/18 15:09

編集2020/01/18 15:14
fujiki3236

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問