テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

横スクロール2Dアクションゲームを作るのに便利そうなPlatformerCharacter2Dの使い方

今回は、2DキャラクターをコントロールするPlatformerCharacter2Dの使い方について紹介します。

このコントローラーでは、キャラクターは左右への移動・ジャンプ・伏せ前後といった挙動をサポートしています。もちろんコードを改造して2段ジャンプといったギミックを追加することも可能です。

また、物理挙動でブロックに影響を与えることが可能で、壁にめり込み永続ジャンプするといった、凄くよく見るバグも発生しないようになっています。

 

f:id:tsubaki_t1:20141011225252g:plain

バーチャルパットにも対応しています。

f:id:tsubaki_t1:20141012000749p:plain

 

 

このアセットもSample Assetsに含まれて居ます。Sample Assetsをインポートして使用してください。


新 Standard Assets候補、Sample Assets (beta) - テラシュールブログ

 

ステージの作り方については、 以下の記事が参考になるかもしれません。


Sample Assetsのプロトタイプアセットを並べて簡単なステージを作ってみよう[Unity] - テラシュールブログ


無料のタイルマップエディタ・AutoTileSet - テラシュールブログ

 

設定項目

キャラクターの設定項目はこんな感じです。

f:id:tsubaki_t1:20141011233239p:plain

Max Speedは移動速度、Jump Forceはジャンプ力(物理)Air Controlはジャンプ中の制御の可否、What Is Groundは地面と認識するレイヤーの設定です。

 

f:id:tsubaki_t1:20141011233340p:plain

このコントローラーでは、頭と足元の位置を設定し、その情報を下に接地判定を行います。これは柔軟な当たり判定を設定するためだと思われ。

設定方法は、Platformer2DUserControlをアタッチしたオブジェクトの子としてGroundCheckオブジェクトとCeilingCheckオブジェクトを作成し、位置を調整します。これのオブジェクト座標を元に足元チェックが行われます。

 

設定済みプレハブの2D CharacterがSample Assets/2D/Prefabsにあるので、基本それを使いましょう。

独自スプライトアニメーションの設定

独自のスプライトを設定するには、Animatorにアニメーションを設定する必要があります。

これはテンプレートとなるAnimation Controllerを更新する方法と、Animation Override Controller を使用する2種類の方法があります。

 

f:id:tsubaki_t1:20141011234813p:plain

アニメーションの作成・設定方法についてはこちら。


Unityのスプライトアニメーションの使い方(基本編) - テラシュールブログ

 

Animation Controller自体を更新

まずはAnimation Controller自体を更新してしまう方法です。

  1. Sample Assets/2D/Animationに2D Character Animator*1があるので、をCtrl+Dで複製します。
  2. あとは複製したAnimator Controllerの各ノードで動かすアニメーションを更新します。この際、不要なノード(たとえばしゃがむアニメーション)がある場合、ノードを削除してしまいましょう。ノードのアニメーションを変更するには、ノードを選択後、InspectorのMotionを変更します。
  3. 最後に2D CharacterのAnimatorのControllerに、先ほど複製したAnimation Controllerを追加すればOKです。

f:id:tsubaki_t1:20141011234638p:plain

 

Animation Override Controller

もう一つの方法は、Animation Override Controllerです。この機能は、特定のAnimatrorの持つアニメーションの一部を更新する機能です。

今回の場合は、以下のような手順で行います。

  1. まずは、ProjectビューでAnimator Override Controllerを作成します。
  2. 次に、Animator Override ControllerのControllerを2D Character Animator(上の例では複製していたAnimation Controller)を指定し、各アニメーションを何で上書きするか指定します。
  3. 最後に2D CharacterのAnimation ControllerにAnimation Override Controllerを設定します。

f:id:tsubaki_t1:20141011235641p:plain

このJumpが大量にあるのは、落下時のアニメーションが細かく指定されているからです(実際は落下速度によりスプライトを変更するだけ)。なので、Animation Controllerからこの項目を減らした後に、Animation Override Controllerでアニメーションを指定するほうが量産が楽かもしれません。

 

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています

*1:このコントローラーで使用するAnimatorテンプレート