プラットフォーマー向けのスプライト
プラットフォーマーではすべてを横から見るので、右を向いたカメラ1台で足りることがよくあります。キャラクターが振り向くと、エンジンがスプライトを反転します。
| ビュー | 向き |
|---|---|
| サイズ | 48pxのキャラクター、16pxまたは32pxのタイル |
| 向き | 1(East、WestはEastを反転) |
サンプルプロジェクト
横視点のプラットフォーマーのキャラクター:.pixorプロジェクトとそのライブラリモデル(CC0)。左のシートがそのレンダリング結果です。
プラットフォーマーに必要なもの
プラットフォーマーには、動きの多い主人公が必要です。待機、歩き、走り、ジャンプ、落下、攻撃、被弾、死亡。敵はもっと少なく、たいてい歩きか飛行と死亡です。その次に、アイテム、障害物、扉、レバー、背景の風景が来ます。
プレイヤーは常に主人公を見ているので、ほとんどのジャンル以上にそのアニメーションが重要です。きれいな走りと読み取りやすいジャンプが大きな役割を果たします。
カメラ
サイドビューを使います:カメラはピッチなしでキャラクターをまっすぐ見ます。床も壁も線になり、ジャンプがはっきり見えます。
ほとんどのプラットフォーマーでは向きは1つで足ります。キャラクターを右向き(東)でレンダリングし、左向きはエンジンで反転させましょう。キャラクターが左右対称でなく反転するとおかしく見えるなら、西のカメラも追加します。
48 pxなら、キャラクターに読み取れる顔、手、武器を描く余地があります。画面にレベルをもっと表示したいなら、小さいサイズでも使えます。スプライトのサイズでその兼ね合いを解説しています。
スケールとピボット
プロジェクト全体で1メートルあたりのピクセル数を1つにそろえれば、コウモリは実際に小さいからスケルトンより小さく、コインはどちらの隣でもサイズが変わりません。ピボットは足元に置きます。Pixorはピボットを1つのピクセルに固定するので、どのフレームでも足が床に着いたままで、エンジンが配置したときにキャラクターが勝手に滑ったり上下したりしません。
ジャンプでは、アニメーションがキャラクターを上に動かすのか、ゲームが動かすのかを決めます。ほとんどのプラットフォーマーではゲームがスプライトを動かし、アニメーションはポーズを見せるだけなので、その場でレンダリングします。
アニメーション
人型のスケルトン向けに、Pixorのモーションライブラリには待機、歩き、走り、ジャンプ、攻撃、被弾、やられがあり、プラットフォーマーの主人公に必要なものがそろっています。小道具なら、コインや宝石には回転、浮かぶピックアップには上下の揺れ、吊るしたものにはスイング、光るものにはパルスが使えます。フレーム数は控えめに。48 pxなら6~8フレームの走りで滑らかです。詳しくはアニメーションへ。
パレット
プラットフォーマーでは、背景に暗く落ち着いたパレットを、主人公、敵、ピックアップに明るい色を使って、操作に関わるものを目立たせることがよくあります。キャラクターのセレクティブアウトラインもそれに役立ちます。Pixorには7つのパレットが組み込まれており、Lospecの.hexやGIMPの.gplファイルも読み込めます。パレットのランプを参照してください。
合う無料ライブラリのアセット
Pixorでの設定
- モデルを読み込むか、プラットフォーマーのサンプルを開きます。
- シーンステップで、アウトライナーのカメラ「南」をクリックします。その「ゲーム」設定で、ゲームの種類に合わせてワンクリックで設定できます。プラットフォーマーを選びます。
- カメラがキャラクターの右側(東)を見るよう回転を設定し、ビュー、ピッチ、幅、高さを確認します。シートに必要なのはこのカメラ1台だけです。
- アクションのステップで、idleやwalkなどのアニメーションを選びます。
- スタイルステップでルックを選びます。
- 書き出しでシートが書き出されます。形式については書き出しを、エンジンへの取り込みについてはGodotやUnityを参照してください。
質問
なぜ1方向だけなのですか?
横視点のゲームでは、キャラクターは左か右を向きます。右向き(東)でレンダリングし、左向きはエンジンで反転させましょう。シートが半分になり、両方向がまったく同じになります。
西向きもレンダリングすべきなのはどんなときですか?
剣を常に右手に持つなど、キャラクターが左右対称でない場合、反転すると持つ手が入れ替わります。それが気になるなら西のカメラを追加しましょう。
プラットフォーマーのキャラクターはどのくらいの大きさにすべき?
48pxなら、16pxや32pxのタイルグリッドで顔や手足がはっきり見えます。小さめのゲームでは32px以下を使います。画面にレベルをどれだけ映したいか次第です。