回答:
それはすべて相対的です。本当に、あなたは常にあなたの固定されたプレーヤーの位置に関連してあなたの見方を変えています。
したがって、ここでは画面を忘れて、次の3つのステップがあるとしましょう(各ゲームループで更新される位置を表します)。
playerWorldPosition = 50, 100; objectWorldPosition = 60, 200;
playerWorldPosition = 55, 110; objectWorldPosition = 60, 160;
playerWorldPosition = 60, 120; objectWorldPosition = 60, 120;
(それぞれの場合のx、yとして)
ご覧のように、オブジェクト(パワーアップの可能性があります)がまっすぐに落下している間、プレイヤーは飛んでいる、またはジャンプして少し右に移動しています。プレイヤーはパワーアップをキャッチします。これをどのように画面上に描画しますか?
まず、プレーヤーを常に画面の中央に配置したいとします。したがって、ビューはプレーヤーにロックされます。これは、視覚化する最も簡単な方法です。プレーヤーの位置は常にscreenCentre
(つまりscreenWidth/2, screenHeight/2
)になります。それでは、世界の他のオブジェクトの画面上の位置をどのように取得しますか?
objectScreenPosition = (objectWorldPosition - playerWorldPosition) + screenCentre;
(playerWorldPosition- playerWorldPosition) + screenCentre
がに等しいため、この式は実際のプレーヤーでも機能することがわかりscreenCentre
ます。そのため、リストを実行して、ゲーム内の各エンティティに同じ数式を適用できます。この単純なアプローチを使用して、他のもの(カメララグ、レベルの隅にいる場合など)に基づいて構築できます。