Unity事例ノート

UNITY

階段を上るオブジェクト移動(SimpleMove)

十字キー操作で、オブジェクトを簡単に動かせるスクリプトは、以前の記事で作ってみました。

【Unity C#】簡単に十字キー操作できるスクリプト

今回は、CharacterControllerを使用して、オブジェクトが階段をかけ上れるように動きをつけてみましょう。

このように、階段にぶつかっても上っていく動きです。

関連記事:
【Unity C#】CharacterController.Moveによるジャンプ移動
【Unity C#】進行方向へ回転するプレーヤー操作1
【Unity C#】進行方向へ回転するプレーヤー操作2
【Unity C#】乗れば下降していく床

階段の用意

まずは階段のオブジェクトを用意しましょう。

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

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

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

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

CharacterControllerを使う

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

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

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

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

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

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

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

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

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

SimpleMoveを使って動かす

このままプレイしても、カプセルは動きません。

カプセルの動作させるには、スクリプトが必要です。

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

CapsuleMove.csを記述します。

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

左右キーで回転、上下キーで前後移動します。(WASDキーでも操作可能。)

カプセルが動きましたが、階段を上ることができません。

階段のキューブは、高さが0.5あります。

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

これで、階段を上ることができました。

CharacterControllerを使用した場合、リジッドボディは効かないため、通常は重力的なものをスクリプトで作らないといけません。

今回使用したSimpleMoveでは、重力が自動的に加えられます。

SimpleMoveはジャンプの動きはありませんが、フィールド内を簡単に動かしていく際に便利な機能です。

関連記事:
【Unity C#】CharacterController.Moveによるジャンプ移動
【Unity C#】進行方向へ回転するプレーヤー操作1
【Unity C#】進行方向へ回転するプレーヤー操作2
【Unity C#】乗れば下降していく床