0

我正在尝试使用 OpenGL 在 android 中制作游戏。

除了这个,一切都很好。

我有一个星系 S2,我的兄弟有一个星系 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

在 wiki 上为Samsung Galaxy S II找到 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 回答