Pygame重新缩放游戏分辨率+坐标

时间:2018-05-02 16:55:38

标签: python pygame

我搜索了很多关于这一点,但没有帖子似乎回答这个具体问题。 所以我正在制作一个pygame应用程序,我对此非常陌生。对于屏幕缩放,我使用以下代码行来获取用户的屏幕信息:

infoObject = pygame.display.Info()
ScreenWidth = infoObject.current_w
ScreenHeight = infoObject.current_h
window = pygame.display.set_mode((ScreenWidth, ScreenHeight), pygame.FULLSCREEN)

但我的问题是:我使用我当前的显示统计数据,但另一个用户显然可以有其他统计数据。但是,对于文本的放置,我使用的是:

window.blit(text, (ScreenWidth/2 - text.get_rect().width/2, ScreenHeight*0.6))

将它放到屏幕中间。如果更改了分辨率,则文本的位置也将如此。

有时我也会使用以下内容:

window.blit(text, (ScreenWidth/2 - text.get_rect().width/2-500, ScreenHeight*0.6))

将文本移到左侧。如果屏幕的宽度仅为720(例如),则不会显示。但由于我在这里处理相对位置,原始布局/设计将不再存在。有人知道我如何“重新缩放”我的游戏画面,所以它“自动”重新调整我的文本位置,如果这是有道理的:)?

1 个答案:

答案 0 :(得分:3)

这是基本的代数:您缩放了屏幕中点,但没有将移动缩放到新的屏幕尺寸。由于您没有指定“我当前的显示统计数据”在实际值中的含义,因此......

width_factor  = ScreenWidth  / my_current_display_width
height_factor = ScreenHeight / my_current_display_height
move_dist = 500 * width_factor
new_x = ScreenWidth/2 - text.get_rect().width/2 - 500
window.blit(text, (new_x, ScreenHeight*0.6))

我对你投入的魔法0.6非常怀疑;从哪里起源?应该是height_factor吗?