2016-11-12 10 views
0

私はゲームをコーディングしています。私はの背景をからまで繰り返して、を何度も繰り返しています。水平タイリングの背景

これは私がカメラのXが正の場合、カメラのXは 負の第三のとき最初のdrawImageは、画像を描画

xOffset = (int) (camera.getX() % WIDTH); 

g.drawImage(bgInv, xOffset - WIDTH, 0, WIDTH, HEIGHT, null); 
g.translate(xOffset, 0); 
g.drawImage(bg, 0, 0, WIDTH, HEIGHT, null); 
g.translate(-xOffset, 0); 
g.drawImage(bgInv, xOffset + WIDTH, 0, WIDTH, HEIGHT, null); 

を使用しているコードです。

  • BGが
  • bgInvは、私が動いてるとxOffsetプロパティが0にWIDTHからなるとき、それはの影響を与えるということである

問題反転バックグラウンドで通常の背景です「テレポート」

Click here to see

コンソールはxOffsetプロパティ

私はxOffsetプロパティを取得するためにモジュロを使用していますが、私はより良い方法を把握していないので、それは知っているが出力されて ...

ありがとうございます。

+1

剰余は負の数を示します。 'if(xOffset <0)xOffset + = WIDTH;'を2行目として試してみてください。 – Marco13

+0

@ Marco13 xOffsetsは否定的なことはありませんが、ur if文を使用してそれをwhileに変更しようとしましたが、まだ動作しません – L3n

+0

この投稿が役立つかもしれません:http://stackoverflow.com/questions/16138363/infinite-background -for-game/16138735#16138735 – camickr

答えて

1

私が正しく理解していれば、繰り返したいものは2 * WIDTHでですイメージです。ここで、左半分は背景イメージで、右半分は同じイメージが水平に反転しています。それでは、あなたが行うことができますが、次のされ

:負の数の

xOffset = (int) (camera.getX() % (2 * WIDTH)); 

// draw the background image at x = xOffset - 2 * WIDTH 
g.drawImage(bg, xOffset - 2 * WIDTH, 0, WIDTH, HEIGHT, null); 
g.drawImage(bgInv, xOffset - WIDTH, 0, WIDTH, HEIGHT, null); 

// draw the background image at x = xOffset 
g.drawImage(bg, xOffset, 0, WIDTH, HEIGHT, null); 
g.drawImage(bgInv, xOffset + WIDTH, 0, WIDTH, HEIGHT, null); 
+0

これはまさに私が感謝の必要なものです! – L3n

関連する問題