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

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

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

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity3D

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

Q&A

1回答

450閲覧

<Unity> Gaiaを用いた地形上でPlayerを移動させることができない

aNPJdCMn

総合スコア13

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity3D

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

0グッド

0クリップ

投稿2022/03/31 12:38

編集2022/04/01 11:54

<Unity 3D>
地形自動生成のアセット「Gaia 2021 - Terrain & Scene Generator」を使用して、地形を作成したのですが、Playerを移動させることが出来ず困っています。
今回移動させたいのは自身で用意したAssetsのprefabsです。移動するためのスクリプトも自作しました。
矢印キーを押下すると少しは移動するのですが、急に何かに引っかかったかのように進めなくなってしまいます。
コライダー周りの設定が足りていないのかと思いますが、何が悪いのでしょうか?

 
以下、移動を制御するスクリプトです。

cs

1 public Slider spSlider; // PlayerのStamina 2 Rigidbody rb; // PlayerのRigidbody 3 private float horizontalInput; // 水平移動 4 private float verticalInput; // 垂直移動 5 public Vector3 cameraForward; // カメラの正面位置 6 public Vector3 moveForward; // Playerの正面位置 7 8 private void playerMoveForward() 9 { 10 // 水平移動 11 horizontalInput = Input.GetAxisRaw("Horizontal"); 12 // 垂直移動 13 verticalInput = Input.GetAxisRaw("Vertical"); 14 15 // カメラの方向から、X-Z平面の単位ベクトルを取得 16 cameraForward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized; 17 18 // 方向キーの入力値とカメラの向きから、移動方向を決定 19 moveForward = cameraForward * verticalInput + Camera.main.transform.right * horizontalInput; 20 21 if (0 < spSlider.value) 22 { 23 if ((Mathf.Abs(horizontalInput) > 0) || (Mathf.Abs(verticalInput) > 0)) 24 { 25 // 移動方向にスピードを掛ける。ジャンプや落下がある場合は、別途Y軸方向の速度ベクトルを足す。 26 rb.velocity = moveForward * 5 + new Vector3(0, rb.velocity.y, 0); 27 } 28 else 29 { 30 moveForward = new Vector3(0f, 0f, 0f); 31 rb.velocity = new Vector3(0f, 0f, 0f); 32 } 33 } 34 else 35 { 36 moveForward = new Vector3(0f, 0f, 0f); 37 rb.velocity = new Vector3(0f, 0f, 0f); // スタミナ切れ時、移動できない 38 } 39 40 // キャラクターの向きを進行方向に 41 if (moveForward != Vector3.zero) 42 { 43 transform.rotation = Quaternion.LookRotation(moveForward); 44 } 45 }

本質問とは関係がないものもございますが、移動としては、「Input.GetAxisRaw」で取得し、「rb.velocity」で移動させようと考えております。
カメラは「Assets/Standard Assets/Cameras/Prefabs/FreeLookCameraRig.prefab」を使用しております。

また、PlayerのInspectorは以下のものです。

イメージ説明

 

Assets/Standard Assets/Characters/ThirdPersonCharacter/Prefabs/ThirdPersonController.prefabはGaiaの地形上で移動できることは確認済みです。
Capsule Colliderがおかしいのかと思い、サイズ変更等を行ったのですが、変化なしです。

解決する方法ご存じの方いらっしゃれば、ご教示いただきたいです。

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

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

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

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

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

bboydaisuke

2022/04/01 03:20

質問に貼ってあるコードは > 本質問とは関係がないものもございますが と言ってますが、「必要なものがない」状態でもあります。 範囲外で定義されている変数などがあるので、そういう状態がない「意味の通じる」ものに編集して下さい。
bboydaisuke

2022/04/01 03:52

それから Gaia にはいろいろなバージョンがあるので "Gaia" だけじゃなくて正式名称を書いた方がよいでしょう。有料アセットならば、持っている人がいない可能性があるので、それを使わない場合(例えば ProBuilder で凹凸のある地形を作った場合)で問題が起きるケースを探した方がよいでしょう。
aNPJdCMn

2022/04/01 11:59

>範囲外で定義されている変数などがあるので、そういう状態がない「意味の通じる」ものに編集して下さい。 変数宣言を追記しました。不足分に関して何かございましたら、ご指摘ください。 > "Gaia" だけじゃなくて正式名称を書いた方がよいでしょう。 正式名称は「Gaia 2021 - Terrain & Scene Generator」です。 gaia以外のデコボコな地形でも同様の問題が発生するのかも試してみたいと思います。
guest

回答1

0

移動速度を代入している部分↓

C#

1// 移動方向にスピードを掛ける。ジャンプや落下がある場合は、別途Y軸方向の速度ベクトルを足す。 2rb.velocity = moveForward * 5 + new Vector3(0, rb.velocity.y, 0);

velocityに直接代入する代わりにAddForce()メソッドを使ってみては?

C#

1// 移動方向にスピードを掛ける。ジャンプや落下がある場合は、別途Y軸方向の速度ベクトルを足す。 2rb.AddForce(moveForward * 5 + new Vector3(0, rb.velocity.y, 0));

投稿2022/04/01 05:11

KomoriGameDev

総合スコア433

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

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

aNPJdCMn

2022/04/01 12:00

ご提案のコードに置き換えてみたのですが、現象としては変化ありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問