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