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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Unity3D

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

Q&A

0回答

244閲覧

Unity カメラが壁をすり抜けてしまう対策がうまくいかない

mikeko0901

総合スコア227

Unity3D

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

0グッド

1クリップ

投稿2022/06/06 23:59

Unity 2021.3.3f1
3D

脱出ゲームを制作していまして、マウスのホイールの動きによってカメラを動かすようにしています。
transform.positionで動かしていることもあり、壁をすり抜けてしまうので、Rayをカメラの方向に進む分だけ飛ばして
壁に当たったら移動させない という風にしたいのですが、うまくいきません。

■CameraManager.cs

using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraManager : MonoBehaviour { //クリックで前に進むで追加 public float speed = 0.1f; // マウスホイールの回転値を格納する変数 private float scroll; //Raycastの当たり判定情報 RaycastHit hitInfo; // Start is called before the first frame update void Start() { Camera.main.transform.position = mainCameraTransforms[1].position; Camera.main.transform.rotation = mainCameraTransforms[1].rotation; } private void Update() { //ホイール操作によるカメラ移動。参考:http://corevale.com/unity/6445 scroll = Input.GetAxis("Mouse ScrollWheel"); // マウスホイールの回転値を変数 scroll に渡す // カメラの前後移動処理 if (scroll > 0 || scroll < 0) { if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hitInfo, scroll * speed)) { Debug.Log("壁!"); } else { //カメラの移動(カメラが向いている方向 forward に変数 scroll を加算する) Camera.main.transform.position += Camera.main.transform.forward * scroll * speed; } } //Rayが出ているかのチェック if (Physics.Raycast(Camera.main.transform.position, -Camera.main.transform.up, out hitInfo, 5.0f)) { Debug.Log("hit");//hitって表示する } } }

マウスのホイールでカメラの前後の移動は問題なくされますが、
壁があるときは、Logに壁!と出すだけで移動させたくないのですが、移動してしまいます。

またRayが出ているか確認するために

//Rayが出ているかのチェック if (Physics.Raycast(Camera.main.transform.position, -Camera.main.transform.up, out hitInfo, 5.0f)) { Debug.Log("hit");//hitって表示する }

をやっていますが、Logにhitとは表示されています。

※よくある、

Debug.DrawRay(transform.position, -transform.up * 5.0f, Color.red);//Raycastを表示する

で、Rayを赤く表示するやつは、なぜだか赤い線が出てこず…こちらも解決できていません…

アドバイスいただけますと幸いです。
よろしくお願いいたします!

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

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

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

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

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

bboydaisuke

2022/06/07 01:15

Unity には Cinemachine, Chimenachine Collider という「カメラの制御」「カメラが壁をすり抜けるのを防止する機能」が最初からありますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問