如何在不同屏幕尺寸上实现相同的物理效果?

3
有没有一种优雅的方法来计算速度、大小和距离,以便它们在每个屏幕尺寸上都相同?我尝试了很多方法,包括缩放因子等,但都不起作用。一旦屏幕尺寸不再是1920x1080,所有东西的大小就变得非常奇怪。
编辑:我解决了这个问题。现在我使用屏幕宽度的分数创建对象的大小。我将每个硬编码速度除以1080/screenWidth或1920/screenHeight,以使它们在每个屏幕尺寸上都相同。
所以我仍然使用缩放因子,但使用频率要少得多,我认为有时我在错误的地方使用它们。
现在问题是:既然所有东西都与屏幕宽度成比例,如何支持其他比例的设备呢?我试图找出哪一边更接近16:9的框架,然后使用那一边来适当地缩放所有内容,但我发现这样做不行。游戏如何处理不同的屏幕比例?

为什么不直接使用Android已经具备的单位dp来处理这种情况呢?https://dev59.com/A3I-5IYBdhLWcg3wEELu - TheWanderer
还要意识到屏幕的高宽比不同。任何像1080这样的硬编码值都行不通。 - Morrison Chang
3
确定一个基本尺寸,使物理学以你喜欢的方式工作。然后,针对不同尺寸的屏幕,获取相对于基本尺寸的x和y方向上的缩放因子。最后,将这些x和y缩放因子应用于所关心的数量,例如速度。 - jrd1
@TheWanderer 我在开始之前读了那个问题,并尝试着实现了自己的 dp... - Finni
@jrd1,这就是我所做的,但我对解决方案感到不满意,因为首先我在某个地方犯了一个错误,其次我认为这不是一个非常优美的解决方案... 难道没有一些优雅的技巧吗?如果没有,我想我将不得不再次做同样的事情,并希望我不会再次搞砸它,那将很烦人。 - Finni
@Finni:根据你所写的,你已经“反转”了x缩放因子。在我看来,没有比涉及缩放因子更清晰的解决方案——其他任何方法都不如适应性、直观和可维护。 - jrd1
1个回答

0

我现在使用给定的 16 : >9 显示器的 height 并计算它在一台带有 16 : 9 显示器的屏幕上的 width,然后将其作为实际宽度计算。所有对象都采用偏移量 (actualWidth-wantedWidth)/2f 绘制,以使物体居中显示。如果比例是 16 : <9,高度也可以采用相同的方法。

因此,简而言之:如果屏幕比例不适合,我会在所需空间周围放置(黑色或纹理)条形来适应比例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接