精灵在 canvas 上的速度在不同的屏幕尺寸上不同
Speed of sprite on canvas different on different screen sizes
我正在使用公式计算速度,并使用屏幕宽度作为距离,使用 fps 作为时间。精灵在屏幕上移动时的速度仍然不同。我应该如何更改公式以使速度在所有屏幕尺寸上感觉相同?
public static float distanceX = Screen.width;
public static float time = 60f ;
public static float speed = Player.distanceX / Player.time;
要回答这个问题,您必须定义 "feel" 需要的内容。例如,假设设备横向放置。 4:3 设备比 16:9 设备窄得多,因此如果屏幕上有一堆水平排列的方块,则 16:9 设备上的方块数量会多于 16:9 设备上的4:3 设备。
如果您的目标是在固定时间内从屏幕的一侧移动到另一侧,那么您在问题中显示的公式是正确的。
如果您的目标是在恒定时间内移动过 N 个方格,那么您需要一个不同的公式。听起来这就是你想要的。
一种方法是定义一个与设备无关的 "arena",其中一切都在移动,然后将其安装到设备上。例如,您可以将世界定义为 1000x1000,并且事物以每秒 100 个单位的速度移动。然后,您可以通过切断顶部和底部,或对两侧进行信箱来使竞技场适合屏幕。横向卷轴平台游戏通常会将竞技场与设备高度相匹配,然后水平显示更宽或更窄的视野。 (有关此方法的示例,请参阅 Android Breakout。)
在相关说明中,假设设备具有特定的固定帧速率是不明智的。可以在 this appendix.
中找到一些建议
我正在使用公式计算速度,并使用屏幕宽度作为距离,使用 fps 作为时间。精灵在屏幕上移动时的速度仍然不同。我应该如何更改公式以使速度在所有屏幕尺寸上感觉相同?
public static float distanceX = Screen.width;
public static float time = 60f ;
public static float speed = Player.distanceX / Player.time;
要回答这个问题,您必须定义 "feel" 需要的内容。例如,假设设备横向放置。 4:3 设备比 16:9 设备窄得多,因此如果屏幕上有一堆水平排列的方块,则 16:9 设备上的方块数量会多于 16:9 设备上的4:3 设备。
如果您的目标是在固定时间内从屏幕的一侧移动到另一侧,那么您在问题中显示的公式是正确的。
如果您的目标是在恒定时间内移动过 N 个方格,那么您需要一个不同的公式。听起来这就是你想要的。
一种方法是定义一个与设备无关的 "arena",其中一切都在移动,然后将其安装到设备上。例如,您可以将世界定义为 1000x1000,并且事物以每秒 100 个单位的速度移动。然后,您可以通过切断顶部和底部,或对两侧进行信箱来使竞技场适合屏幕。横向卷轴平台游戏通常会将竞技场与设备高度相匹配,然后水平显示更宽或更窄的视野。 (有关此方法的示例,请参阅 Android Breakout。)
在相关说明中,假设设备具有特定的固定帧速率是不明智的。可以在 this appendix.
中找到一些建议