横スクロール2Dアクションゲームを作るのに便利そうなPlatformerCharacter2Dの使い方
今回は、2DキャラクターをコントロールするPlatformerCharacter2Dの使い方について紹介します。
このコントローラーでは、キャラクターは左右への移動・ジャンプ・伏せ前後といった挙動をサポートしています。もちろんコードを改造して2段ジャンプといったギミックを追加することも可能です。
また、物理挙動でブロックに影響を与えることが可能で、壁にめり込み永続ジャンプするといった、凄くよく見るバグも発生しないようになっています。
バーチャルパットにも対応しています。
このアセットもSample Assetsに含まれて居ます。Sample Assetsをインポートして使用してください。
新 Standard Assets候補、Sample Assets (beta) - テラシュールブログ
ステージの作り方については、 以下の記事が参考になるかもしれません。
Sample Assetsのプロトタイプアセットを並べて簡単なステージを作ってみよう[Unity] - テラシュールブログ
無料のタイルマップエディタ・AutoTileSet - テラシュールブログ
設定項目
キャラクターの設定項目はこんな感じです。
Max Speedは移動速度、Jump Forceはジャンプ力(物理)Air Controlはジャンプ中の制御の可否、What Is Groundは地面と認識するレイヤーの設定です。
このコントローラーでは、頭と足元の位置を設定し、その情報を下に接地判定を行います。これは柔軟な当たり判定を設定するためだと思われ。
設定方法は、Platformer2DUserControlをアタッチしたオブジェクトの子としてGroundCheckオブジェクトとCeilingCheckオブジェクトを作成し、位置を調整します。これのオブジェクト座標を元に足元チェックが行われます。
設定済みプレハブの2D CharacterがSample Assets/2D/Prefabsにあるので、基本それを使いましょう。
独自スプライトアニメーションの設定
独自のスプライトを設定するには、Animatorにアニメーションを設定する必要があります。
これはテンプレートとなるAnimation Controllerを更新する方法と、Animation Override Controller を使用する2種類の方法があります。
アニメーションの作成・設定方法についてはこちら。
Unityのスプライトアニメーションの使い方(基本編) - テラシュールブログ
Animation Controller自体を更新
まずはAnimation Controller自体を更新してしまう方法です。
- Sample Assets/2D/Animationに2D Character Animator*1があるので、をCtrl+Dで複製します。
- あとは複製したAnimator Controllerの各ノードで動かすアニメーションを更新します。この際、不要なノード(たとえばしゃがむアニメーション)がある場合、ノードを削除してしまいましょう。ノードのアニメーションを変更するには、ノードを選択後、InspectorのMotionを変更します。
- 最後に2D CharacterのAnimatorのControllerに、先ほど複製したAnimation Controllerを追加すればOKです。
Animation Override Controller
もう一つの方法は、Animation Override Controllerです。この機能は、特定のAnimatrorの持つアニメーションの一部を更新する機能です。
今回の場合は、以下のような手順で行います。
- まずは、ProjectビューでAnimator Override Controllerを作成します。
- 次に、Animator Override ControllerのControllerを2D Character Animator(上の例では複製していたAnimation Controller)を指定し、各アニメーションを何で上書きするか指定します。
- 最後に2D CharacterのAnimation ControllerにAnimation Override Controllerを設定します。
このJumpが大量にあるのは、落下時のアニメーションが細かく指定されているからです(実際は落下速度によりスプライトを変更するだけ)。なので、Animation Controllerからこの項目を減らした後に、Animation Override Controllerでアニメーションを指定するほうが量産が楽かもしれません。
このコンテンツは、『ユニティちゃんライセンス』で提供されています
*1:このコントローラーで使用するAnimatorテンプレート