【问题标题】:Pygame rescaling game-resolution + coordinatesPygame重新调整游戏分辨率+坐标
【发布时间】:2018-05-02 16:55:38
【问题描述】:

我对此进行了很多搜索,但似乎没有帖子回答这个具体问题。 所以我正在制作一个 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 的宽度(例如),它将不可见。但是由于我在这里使用相对位置,原始布局/设计也将不再存在。有人知道我如何“重新缩放”我的游戏屏幕,以便它“自动”重新缩放我的文本位置,如果这有意义的话:)?

【问题讨论】:

  • 当你得到解决方案时,请记得给有用的东西投票并接受你最喜欢的答案(即使你必须自己写),这样 Stack Overflow 才能正确存档问题。跨度>

标签: python pygame


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复,我认为这可以解决问题!谢谢! 0.6 只是“屏幕高度的 60%”
猜你喜欢
  • 2014-01-24
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2017-02-16
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多