0

タイトルが少し…あいまいな場合は申し訳ありません。とにかく、私はJavaを使用してプラットフォーマーを作成しており、毒ダーツを発射するプレッシャープレートトリガーディスペンサーを作成しようとしています。ゲームはほとんどグリッドシステムに分割されており、各ブロックがグリッド上のスポットになっています。これまでのところ、プレッシャープレートが作動すると、押し下げられたように見えるようにしています。画面に描くこともできましたが、動かないなどです。これは、画面に描画するために使用するコードです。

public void drawDart(Graphics g) {
    if(Component.isPressed) {
        for(int x = 0; x < block[0].length; x++) {
            for (int y=0; y < block[0].length; y++) {
                if(x == 91 && y == 35) {
                    block[x][y] = new Block(new Rectangle(x * Tile.tileSize, y * Tile.tileSize, Tile.tileSize, Tile.tileSize), Tile.poisonDart); 
                }
            }
        }
    }
}

残念ながら、このコードを使用してプレッシャープレートを踏むと、ダーツは描画されますが、移動しません。以前にx++を使用してみましたが、ダーツはまったく動きません。

もう1つの問題は、ダーツを重力の影響を受けているように見せたいということです。これは、ゲームを大きなグリッドシステムに分割した場合には困難です。いずれにせよ、皆さんはどう思いますか?

モデレーター編集(OPコメントから移動):

block[x][y] = new Block(new Rectangle(x * Tile.tileSize, y * Tile.tileSize,
    Tile.tileSize, Tile.tileSize), Tile.poisonDart); 
4

1 に答える 1

1

ゲームに「ゲームループ」を実装しましたか?これは次のようになります(擬似コード):

while (gameRunning) {
  for (GameEntity e in gameWorldEntities) {
    e.update(timePassed);  
  }
  for (GameEntity e in gameWorldEntities) {
    e.draw();
  }
}

各dartオブジェクトは、ゲームワールドでの位置を認識している必要があり、Dartクラスのupdate()メソッドは、起動された場合に水平に移動したり、重力によって落下させたりするなど、その位置を更新する必要があります。別の物理エンジンを使用している場合を除いて、水平方向と垂直方向の速度を追跡することをお勧めします。次に、draw()メソッドは、画面の適切な場所に描画する必要があります。

于 2012-10-10T22:06:38.327 に答える