画布上的精灵速度不同在不同的屏幕尺寸上

时间:2016-05-22 04:45:56

标签: android android-canvas

我正在使用公式计算速度,并使用屏幕宽度作为距离和fps作为时间。在屏幕上移动时,精灵的速度仍然不同。我应该如何更改公式以使所有屏幕尺寸的速度都相同?

public static float distanceX = Screen.width;
public static float time = 60f ;
public static float speed = Player.distanceX / Player.time;

1 个答案:

答案 0 :(得分:0)

要回答这个问题,你必须定义"感觉"需要是。例如,假设设备以横向方向保持。 4:3设备比16:9设备窄得多,所以如果你在屏幕上水平排列一堆正方形,那么你在16:9设备上会有比4:3更多的设备。设备

如果您的目标是在一段时间内从屏幕的一侧移动到另一侧,那么您在问题中显示的公式是正确的。

如果您的目标是在恒定的时间内移过N个方格,那么您需要一个不同的公式。听起来这就是你想要的。

一种方法是定义与设备无关的竞技场"其中一切都移动,然后适合设备。例如,您可以将世界定义为1000x1000,并且每秒移动100个单位。然后,您可以通过切断顶部和底部,或者将侧面装箱,将竞技场安装到屏幕上。侧滚动平台通常会将竞技场与设备高度相匹配,然后水平显示更宽或更窄的视野。 (有关此方法的示例,请参阅Android Breakout。)

在相关的说明中,假设设备具有特定的固定帧速率是不明智的。可以在this appendix中找到一些建议。