0

ゲームで 4 つの異なる視差背景を揃えようとしています。これらは、スペース シューターのような無限のタイリング背景ではなく、画面全体を埋め尽くすわけではありません。それらは地面に沿って走る並木です。

私の画像は左下に配置されており、それらをすべて地形の最下点に揃えようとしています。

次の情報があります: すべてを整列させたいマップ上の最低点 (300 です)。背景の視差/スクロール係数。背景の高さ。

http://i.imgur.com/BRlNP.jpg

私はもう試した:

background.y = lowestPoint; // doesn't work
background.y = lowestPoint * parallaxFactor; // doesn't work, way off
background.y = lowestPoint + lowestPoint * parallaxFactor; // doesn't work

ここで明らかに何かが欠けています。

基本的に、視差係数と地形の最低点に基づいて、背景タイルの登録点を配置する場所を計算しようとしています。

アイデア?

4

1 に答える 1

1

これを正しく理解していれば; 画面位置は次のように計算されます。

screenX = (positionX - cameraX) * parallaxFactor
screenY = (positionY - cameraY) * parallaxFactor

次に、あるカメラ位置で視差係数が異なる 2 つの位置を揃えるには、画面座標を一致させる必要があります。

obj1.screenY = (obj1.positionY - cameraY) * obj1.parallaxFactor
obj2.screenY = (obj2.positionY - cameraY) * obj2.parallaxFactor

(obj1.positionY - cameraY) * obj1.parallaxFactor =
    (obj2.positionY - cameraY) * obj2.parallaxFactor

obj1.positionY =
    (obj2.positionY - cameraY) * F + cameraY

どこでF = obj2.parallaxFactor / obj1.parallaxFactor

横方向も同様。

于 2012-06-13T06:49:38.230 に答える