動き出しは少しずつ加速、止まるときは少しずつ減速するような、プレーヤーの移動処理を作ってみましょう。
「キャラクターコントローラー」のコンポーネントを使えば、自然な動きをつけることができます。
キャラクターコントローラーは、他にも階段を上ったり、ジャンプできる機能があります。
関連記事:
CharacterController.Moveによる移動操作
階段を上るオブジェクト移動(SimpleMove)
進行方向へ回転するプレーヤー操作1
進行方向へ回転するプレーヤー操作2
キャラクターコントローラーに発射機能
CharacterControllerの衝突判定
キャラクターに適した移動処理
Planeを作成し、その上にCapsuleを置きます。
プレーヤーの方向をわかりやすくするため、Sphereを付けます。
Capsuleを右クリック1 > 3Dオブジェクト > スフィア
Sphereの位置を調整します。
このように、前方(Z方向)にSphereが出ている状態です。
Capsuleにキャラクターコントローラーを追加します。
コンポーネントを追加 > 物理 > キャラクターコントローラー
CapsuleMove.csを作成し、Capsuleに追加します。
CapsuleMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CapsuleMove : MonoBehaviour { float speed; float rotateSpeed; void Start() { speed = 3.0f; rotateSpeed = 3.0f; } void Update() { CharacterController controller = GetComponent<CharacterController>(); //左右キー Yを軸として回転 transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0); //上下キー 前後移動 Vector3 forward = transform.TransformDirection(Vector3.forward); controller.SimpleMove(forward * speed * Input.GetAxis("Vertical")); } } |
ゲームプレイしてみましょう。
上下キーで前後移動、左右キーで回転します。
動き始めは徐々に加速、停止のときは徐々に減速。
キャラクターの移動に適した、自然な動きが表現できました。
キャラクターコントローラーは、他にも階段を上ったり、ジャンプできる機能があります。
関連記事:
CharacterController.Moveによる移動操作
階段を上るオブジェクト移動(SimpleMove)
進行方向へ回転するプレーヤー操作1
進行方向へ回転するプレーヤー操作2
キャラクターコントローラーに発射機能
CharacterControllerの衝突判定