【问题标题】:How to achieve same physics on different screen sizes?如何在不同的屏幕尺寸上实现相同的物理效果?
【发布时间】:2019-01-30 21:11:23
【问题描述】:

是否有任何优雅的方法可以计算速度、尺寸和距离,以便它们在每个屏幕尺寸上最终都相同?

我尝试了很多东西,包括缩放因子等,但没有奏效。一旦屏幕尺寸不再是 1920x1080,一切都会变得非常奇怪。

编辑: 我修好了它。我现在使用屏幕宽度的分数来创建对象的大小。 我将使用的每个硬编码速度分别除以1080 / screenWidth1920 / screenHeight,这样它们在每个屏幕尺寸上都是相同的。

所以我仍然使用比例因子,但我使用它们的频率较低,而且我认为我有时会在错误的地方使用它们。

现在的问题是: 既然所有内容都是根据屏幕宽度进行缩放的,我如何才能支持除 16:9 以外的其他比例的设备?我试图找出哪个边更接近 16:9 帧,然后使用那个边正确缩放所有内容,但正如我发现的那样,这不起作用。游戏如何处理不同的屏幕比例?

【问题讨论】:

  • 为什么不直接使用 Android 已经为这类事情提供的单元dpstackoverflow.com/questions/2025282/…
  • 还要意识到屏幕没有相同的高度/宽度比。任何像 1080 这样的硬编码值都不起作用。
  • 确定物理以您喜欢的方式工作的基本维度。然后,对于不同尺寸的屏幕,获取相对于基本尺寸的 x 和 y 尺寸的比例因子。最后,在感兴趣的数量上使用这些 x 和 y 比例因子,例如速度。
  • @TheWanderer 我在开始之前阅读了这个问题并尝试实现我自己的 dp...
  • @jrd1 这就是我所做的,我对解决方案不满意,因为首先我在某个地方犯了一个错误,其次我认为这不是一个非常漂亮的解决方案......不是有一些优雅把戏?如果没有,我想我将不得不再次做同样的事情,希望我不要再把它搞砸了,这会很烦人

标签: java android game-physics screen-size


【解决方案1】:

我现在使用给定16 : >9 显示的height 并计算它在带有16 : 9 显示的屏幕上的width,然后我计算所有内容,就好像那是实际宽度一样。一切都以(actualWidth-wantedWidth)/2f 的偏移量绘制,以便对象居中。如果比率为16 : <9,则高度也是可能的

简而言之:如果屏幕比例不合适,我会通过在我想要的空间周围放置(黑色或纹理)条来使其合适。

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多