获取玩家窗口大小,根据大小更改位置?

时间:2016-08-25 21:01:53

标签: lua love2d

这就是我的意思。在一个小窗口:

On a small window

宇宙飞船也就是玩家的位置是完美的,靠近底部。但如果我全屏:

in fullscreen

玩家的位置在中间。我怎么能这样做它总是靠近底部?如何处理其他屏幕尺寸?

2 个答案:

答案 0 :(得分:0)

因此,在您的代码中,玩家的y位置设置为固定金额:

player.y = 550

这将是屏幕边界顶部的550px。

在"全屏"截图,您只需拥有更多像素即可使用。相对于窗口顶部550px仍然是相同的数量,但现在它下面有额外的空间。

如果您要设计游戏以扩展到不同的屏幕尺寸,则需要决定如何处理比例尺。

  

我怎么能这样做,所以它总是靠近底部?

您可以检查窗口高度,将播放器固定在屏幕 bottom 上方一定数量的像素上,例如:

player.y = love.window.getHeight( ) - 100

https://love2d.org/wiki/love.window

  

如何处理其他屏幕尺寸?

根据窗口中可用的像素数量,您将获得更多或更少的空间。资产放置有多种选择,当窗口大小发生变化时,您选择的选项取决于您自己想要的结果。

例如,您可能希望允许播放器使用其3显示器设置来查看更多游戏世界。或者,您可能希望保留所有坐标"固定"和scale根据窗口大小的图形。

答案 1 :(得分:0)

就像克里斯已经说过的,根据屏幕的大小,显示的像素数量会有所不同。因此,使用love.graphics.getHeight()获取屏幕的实际高度(以像素为单位)。

然后,您要确保无论屏幕大小如何,您的对象始终保持在同一位置。如果从屏幕的实际高度中减去一些像素(从getHeight()得知),则可以实现此目的。像这样:

screenHeight = love.graphics.getHeight()
objectPositionY = screenHeight - 100
objectHeight = 10

但正如您在上面的一条评论中提到的那样,在“较小”的窗口大小上,对象根本不会显示。如果screenHeight小于您减去的100个像素,则会发生这种情况,当然,对象显示在可见屏幕的上方/外部。但是如果你真的想用这么小的窗口创建一个游戏,你可以尝试这样的事情:

screenHeight = love.graphics.getHeight()
objectPositionY = screenHeight * 0.9
objectHeight = screenHeight * 0.05

这样,对象总是在完全相同的位置上显示,具体取决于screenHeight,其中0是顶部,1是屏幕的底部。哦,当然,你也可以为screenWidth做同样的事情。

但总的来说,你可能应该将最小尺寸限制为有用的东西。

为了完整起见,如果您想使用highDPI为多个平台(尤其是Android)创建游戏,您可能还需要考虑love.window.getPixelScale

相关问题