0

Java Swing で簡単なプラットフォーム ゲームを作成しています。当然のことながら、一部のプラットフォームでは 1 つの画面に対して大きすぎるようにしたいのですが、次の質問があります: プレイヤーが操作するキャラクターが画面の端に近づいたときに、背景を移動させる最善の方法は何ですか? 実際には、背景だけでなく、ゲーム コンテンツ全体 (対戦相手、ブロックなど) ですか? 新しい画像をアップロードして、キャラクターが 1 ピクセル移動するたびにすべてを再描画するよりも、もっと良い方法があるに違いありません。私はこれをわかりやすい言葉で表現したいと思っています.このサイトや他のサイトで調べてみましたが、今のところうまくいきません. 事前にThx。

4

2 に答える 2

1

上記の回答は有効な方法だと思いますが、別の方法が必要な場合は. Graphics オブジェクトを Graphics2D オブジェクトにキャストして、原点からの距離を変換できます。これを行うと、Graphics オブジェクトから描画したものはすべて変換されます

@Override
public void paint(Graphics g){
   super.paint(g);

   Graphics2D g2d = (Graphics2D)g;
   g2d.translate(character.x,character.y);

   background.render(g);
   character.render(g);
}

ただし、必ずしも移動していない可能性のあるオブジェクトを再描画する必要があります。また、大きなマップを扱う場合、問題になる可能性があります。しかし、私は常に、画面上にあるオブジェクトと、部分的に画面上にあるいくつかのオブジェクトのみをレンダリングしようとします. これを行う方法を示すチュートリアルは youtube にあります

チュートリアル

于 2014-07-20T22:03:01.767 に答える