<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がおかしいのかと思い、サイズ変更等を行ったのですが、変化なしです。
解決する方法ご存じの方いらっしゃれば、ご教示いただきたいです。