Unity事例ノート

UNITY

CharacterController.Moveによるジャンプ移動

CharacterControllerによる移動について、前回記事ではSimpleMoveを使用しました。

【Unity C#】階段を上るオブジェクト移動(SimpleMove)

SimpleMoveは左右キーで回転でき、重力が備わっていますが、ジャンプができません。

今回は、Unityスクリプトリファレンスに掲載されているMoveを使って、動作にジャンプを付けてみましょう。

リジッドボディを用いたジャンプについては、こちらを参照ください。
【Unity C#】キャラクターをジャンプさせるしくみ

関連記事:
【Unity C#】進行方向へ回転するプレーヤー操作1
【Unity C#】進行方向へ回転するプレーヤー操作2
【Unity C#】キャラクターコントローラーに発射機能
【Unity C#】ダブルジャンプの仕組み

オブジェクトの用意

前回記事と同じように、まずはオブジェクトを用意しましょう。

平面オブジェクト、2つのキューブを新規作成します。

1つ目のキューブの位置はXYZすべて0にしました。

2つ目のキューブの位置は、Yを0.5、Zを1に変更。

わかりやすいように、床をグレーに、階段を黒に着色しました。

CharacterControllerを使う

続いて、カプセルを作成し、階段の前に配置します。

カプセルに、CharacterControllerを追加します。

コンポーネントを追加 > 物理 > キャラクターコントローラー

CharacterControllerとしてコライダーを持っているので、カプセルコライダーは外しておきます。

階段は0.5の高さがあるので、このままでは階段を上れません。

CharacterControllerの「ステップオフセット」を0.5に変更しましょう。

次に、方向をわかりやすくするために、Sphereを取り付けます。

Sphereを作成してから、Capsuleの中にドラッグ&ドロップしましょう。

Sphereのスケールをすべて0.5にします。

カプセルのZ方向に、Sphereを埋め込みます。

これでカプセルの前面が確認しやすくなりました。

Moveを使ったスクリプト

Caplsuleを動かすために、スクリプトを作成します。

CapsuleMove.csを作成し、Capsuleに追加しましょう。

CapsuleMove.csを記述します。

ゲームプレイしてみましょう。

十字キー(WASDキー)で移動し、スペースキーでジャンプ。

階段も上ることができます。

isGroundedによって、着地している間のみ移動可能。

CharacterController.Moveには、重力が備わっていないため、gravityをつくって重力の機能を記述しています。

関連記事:
【Unity C#】進行方向へ回転するプレーヤー操作1
【Unity C#】進行方向へ回転するプレーヤー操作2
【Unity C#】キャラクターコントローラーに発射機能
【Unity C#】ダブルジャンプの仕組み