2Dプラットフォーマーのカメラロジック

画像








古典的な2Dプラットフォームゲームでカメラの動作を正しく調整することは、見た目ほど簡単ではありません。



一番簡単な方法は、カメラをプレイヤーのキャラクターにしっかりと取り付けて、常に画面の中央にくるようにすることです。 これはプロトタイプでは機能するかもしれませんが、そのようなカメラにはプレイヤーを大いに困らせる欠点があります。



たとえば、キャラクターがジャンプするたびにカメラが上に移動すると、吐き気を引き起こしやすくなります。 また、キャラクターを瞬時に加速して停止させると、カメラが急激に動けます。



新しいTiny Thorゲームでは、さまざまなオプションを試しました。 私たちが結果として得た技術についてお話したいと思います。



最初に、X軸とY軸を互いに独立して処理します。



X軸スクロール



X軸については、左右の境界線(スクリーンショットのフォーカス領域)を設定します。



プレーヤーが移動すると、カメラは前のカメラ位置と新しいプレーヤー位置の間の距離を計算します。 これにより、スクロールする必要があるピクセル数がわかります。 この動きを滑らかにするために、この距離を32で割って、カメラが少し遅れるようにします。 また、カメラの最大速度はこれを超えることはありません。









異なるカメラゾーン



小さな動きごとにカメラがトリガーされるのを避けるために、文字がフォーカス領域の左または右の境界を離れる場合にのみスクロールを使用します。 この場合、カメラはすぐに彼に追いつきます。



このカメラの遅延により、プレーヤーの視線の方向の可視領域が減少しました。 これにより、プレイヤーが敵、障害物、プラットフォームなどに対応するために必要な画面上の重要な情報の量が減ります。



この問題を解決するために、キャラクターのスプライトの方向に基づいて水平フォーカス領域を移動します。



カメラはプレイヤーと同じ方向を向くようになりました








プレイヤーが右に移動すると、フォーカス領域が左に移動するため、キャラクターは画面中央の左に残ります。








キャラクターの速度がX軸に沿って増加するにつれて、フォーカスエリアを中心からさらに移動します。 見かけの距離が長くなったおかげで、プレーヤーはレベルの問題に対応できます。



その結果、プレーヤーの次のアクションに適応するスムーズなカメラの動きが得られ、イライラから彼を救い、レベルの設計の自由度が高まりました。



Y軸スクロール



Y軸に沿ったスクロールも同様のロジックに従い、フォーカス領域の上限と下限を使用します。



キャラクターとカメラの座標の差を32で割る代わりに、スムージング効果のためにディバイダー16を使用します。 さらに、カメラは、キャラクターがオブジェクトの上に立っている場合にのみ移動を開始するため、すべてのジャンプに追従しません。



キャラクターが足の下に着地するとすぐに、カメラはY軸に沿ってスクロールを開始します。








プレーヤーがジャンプしても、カメラはY軸に沿って移動しません。








動作中のX軸とY軸に沿ったカメラの動作。








通常の場合、このようなルールで十分なようですが、プレイヤーが画面の上部近くにジャンプしたり、奈落の底に落ちたりすると、カメラの動作は「壊れます」。



この問題を解決するために、文字の垂直位置を確認する2本の水平線を追加しました。 それらの交点がカメラの急速な動きにつながるため、「パニックライン」(図では濃い黄色で強調表示)と呼びます。



したがって、キャラクターがこれらの線の1つをジャンプまたは転倒して交差すると、カメラはすぐに彼を追い始めます。



カメラはパニックの線を越えるとすぐにキャラクターに追いつきます。








これはすべてのレベルでほとんどの状況で正常に機能しますが、場合によってはこの動作を手動でオーバーライドする必要があります。



レベルエディターで単純な四角形を使用してこれを実装し、キャラクターが特定の領域にいる間、軸の1つでカメラをロックできるようにします。



プラットフォームの端から落下しても安全であることをプレーヤーに示す必要がある場合、これは非常に便利です。



この機能は、宝石で満たされた深い奈落の底に落ちたときなど、主に一方向に向いているレベルの不規則な領域でも使用できます。



また、このロジックを使用して、プレイヤーがまだ画面にロックされているときにボス戦でカメラをロックします。安定したカメラは、すべての攻撃とショットを回避するのに役立ちます。



別のユースケースは、カメラの焦点をレベルの別の部分に完全に切り替えることです。 ここでのロジックは、カメラがキャラクターの位置と目的のエリアの間の線に沿って飛行し、そこで停止してから再び戻るというものです。 たとえば、スイッチを使用した場合の結果を示すために使用します。



これにより、カメラの動的な動作を取得し、95%の時間を問題なく動作させることができ、ゲームプレイまたは劇的な効果に必要な5%の状況でカメラの動作を手動で設定するツールを提供しました。



著者について



ヨッヘンはアサイラムスクエアの創設者です。 アサイラムスクエアは独立したレトロゲームスタジオで、子供の頃からとても愛されていました。 16ビット時代のゲームに触発されたTiny Thorプラットフォーマーは、間もなくSteamでリリースされます。



All Articles