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

以下是我的意思。在小窗口中:

在小窗口中

飞船(即玩家的位置)是完美的,靠近底部。但如果我全屏:

全屏

玩家的位置是在中间。我应该如何使其始终靠近底部?这在其他屏幕尺寸下如何工作?

点赞
用户1003959
用户1003959

因此,在你的代码中,玩家的 y 位置被设置为固定值:

player.y = 550

这将翻译为屏幕边界上方550像素。

在“全屏”截图中,你只是有更多的像素来使用。 550像素相对于窗口顶部仍然是相同的数量,但现在下面有额外的空间。

如果你要设计你的游戏来适应不同的屏幕尺寸,你需要决定如何处理缩放。

如何让它始终靠近底部?

你可以检查窗口的高度,将玩家固定在屏幕底部以下的某个像素数上,例如:

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

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

这在其他屏幕尺寸下如何工作?

你将会根据窗口中可用的像素数得到更多或更少的空间。你有许多选项来安排资产的位置,你选择哪种方式将取决于窗口大小变化时你自己想要的结果。

例如,你可能想让玩家使用他们的3个显示器来查看更多的游戏世界。或者,你可能想保持所有的坐标“固定”,并根据窗口大小缩放图形。

2016-08-25 21:17:38
用户7114852
用户7114852

就像 Chris 已经说过的,根据屏幕大小,显示的像素数量是不同的。因此,使用 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

这样,对象始终保持在相同的位置,具体位置取决于屏幕高度,其中 0 是屏幕顶部,1 是屏幕底部。噢,当然,你也可以对 screenWidth 做同样的处理。

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

最后,为了完整起见,如果你想为多个平台(特别是 Android)使用高 DPI 创建游戏,你也可能考虑使用 love.window.getPixelScale

2016-11-08 13:34:12