0

OpenGlES を使用して、Android でゲームを作成しようとしています。

これ以外はすべて正常に動作しています。

私はGalaxy S2を、弟はGalaxy S3を持っています。

携帯電話でゲームを実行すると、敵が希望する場所 (Y 軸) に正確に移動します。でも兄の電話では、敵は私が望んでいる場所よりも少し下にあります。

この画像はよりよく説明しています:

左が私の携帯、右が弟の携帯。

ここに画像の説明を入力

敵Yを定義する方法は次のとおりです。

   public void addSprite(float screenWidth, float screenHeight) {
        tempSprite = new NormalZombie();
        tempSprite.x = 0;
        tempSprite.y = screenHeight - 30; //IMO this is the problem
        tempSprite.startpos = screenHeight - 30;
        tempSprite.maxX = screenWidth;
        sprites.add(tempSprite);
        background = new GameBG();

    }

解像度の違いにより、ハードコードされた「30」を使用できないと確信していますが、すべての電話で敵を同じ場所に配置するには、そこで何を使用する必要がありますか?

4

2 に答える 2

1

タブレットで のハードコードされた値を取得しscreenHeight、それを定数 MY_HEIGHT として定義します

static const int MY_HEIGHT = 800; // make the 800 your actual pixel height

Samsung Galaxy S IIの wiki で 800 が見つかりました。変化する:

tempSprite.y = screenHeight - 30;
tempSprite.startpos = screenHeight - 30;

に:

tempSprite.y = screenHeight - 30 * screenHeight / MY_HEIGHT;
tempSprite.startpos = screenHeight - 30 * screenHeight / MY_HEIGHT;
于 2013-04-17T18:25:55.920 に答える
0

そのため、予想される位置を示す数値で割って、画面の比率を取得する必要がありました。

これが私がそれをした方法です:

    double ystart;
ystart = screenHeight - (screenHeight / 24);
tempSprite = new NormalZombie();
tempSprite.x = 0;

tempSprite.y = (float)ystart;
tempSprite.startpos = (float)ystart;
tempSprite.maxX = screenWidth;
sprites.add(tempSprite);
background = new GameBG();
于 2013-04-17T19:17:45.653 に答える