在过去的几个小时里,我一直在努力寻找解决这个问题的方法,但我似乎什么也找不到。
我正在开发一个使用LibGDX的安卓游戏。在模拟器中,游戏看起来很好,但当我在手机上玩它时,一切都不同了,放错了地方。我找到的解决方案是使用密度独立像素而不是常规像素,这样无论我使用什么设备,所有的东西都放在正确的位置。然而,我似乎找不到一种合适的方法来做到这一点。我找到的唯一相关的解决方案是使用这个:
public static float pixelToDP(float dp) {
return dp * Gdx.graphics.getDensity();
}我尝试使用上面的公式调整一些对象的大小,但它们仍然与仿真器不同。
请,如果谁有一个解决方案,而不涉及更换奥特奥相机(已经尝试过了),帮助我!
发布于 2017-01-27 21:11:54
这个答案只是为了补充TomGrill在评论中说的话。
您的游戏在仿真器中看起来很好的原因是因为您使用了适合仿真器分辨率的值。
如果在1920x1080分辨率上将精灵定位在100,100,则精灵将位于左上角(或下角,具体取决于y轴的方向)。在200,200的分辨率下,精灵将被放置在屏幕的中间。
精灵的大小也取决于分辨率/像素密度。如果每平方英寸有1个像素,那么32x32像素的sprite将是32英寸宽和32英寸高。但在高像素密度的屏幕上,假设是100pxpr。平方英寸。32x32的雪碧会看起来很小。
这就是视口发挥作用的地方。你选择一个分辨率,假设是900x540,你只需为这个分辨率编码。视口将确保您的游戏缩放,以适应任何分辨率和像素密度。如果将sprite放置在900x540屏幕的中间,视口将确保它位于1920x1080分辨率的中间。
即使您想自己进行这些计算,Gdx.graphics.getDensity();本身也没有任何用处。您需要物理屏幕的宽度和高度才能找到分辨率。你下一步要做的就是重新发明轮子。
https://stackoverflow.com/questions/41832668
复制相似问题