如何在所有手机android中将敌人插入同一地面

时间:2013-04-17 18:07:02

标签: android opengl-es bitmap textures

我正在尝试使用OpenGlES在Android中制作游戏。

除此之外一切正常。

我有一个星系S2,我的兄弟是一个星系S3。

当你在我的手机中运行游戏时,敌人的步伐(Y轴)正好在我想要的位置。 但在我哥哥的手机上,敌人比我想要的更低一点。

此图片更好地解释了:

我的手机在左边,我哥哥的手机在右边。

enter image description here

我定义敌人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'硬编码因为分辨率之间存在差异,但是我需要在那里使用什么来将敌人放在每部手机的同一个地方?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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();