Java 不同设备上的游戏速度不一样

Java 不同设备上的游戏速度不一样,java,android,Java,Android,我有一个应用程序,其中我有恒定的int速度=5;每次更新时,游戏对象玩家都会向前移动5倍。问题是,我不能在不同的设备上处理这个问题——旧设备有fx。每秒20帧,因此每秒更新20次,而另一个每秒更新60帧。然后,我的物体移动得比它应该的快或慢 我尝试了一些屏幕宽度划分,但没有成功。 你解决这个问题的方法不是最好的,例如,Android可以运行在许多不同类型的设备上,所有这些设备都具有不同的屏幕大小,这就是为什么你必须考虑到你的游戏每秒渲染多少帧的原因。该值不是常数,可能因设备、运行的进程等而异。。

我有一个应用程序,其中我有恒定的int速度=5;每次更新时,游戏对象玩家都会向前移动5倍。问题是,我不能在不同的设备上处理这个问题——旧设备有fx。每秒20帧,因此每秒更新20次,而另一个每秒更新60帧。然后,我的物体移动得比它应该的快或慢


我尝试了一些屏幕宽度划分,但没有成功。

你解决这个问题的方法不是最好的,例如,Android可以运行在许多不同类型的设备上,所有这些设备都具有不同的屏幕大小,这就是为什么你必须考虑到你的游戏每秒渲染多少帧的原因。该值不是常数,可能因设备、运行的进程等而异。。。有了这些信息和屏幕宽度,您可以准确地计算图像每秒必须移动多少像素,以产生与屏幕大小无关的相同速度效果。。。 许多像libgdx这样的游戏框架都可以检索这个信息,并将其命名为delta,作为两个连续帧之间的时间差。 让我们用一个例子来分解它: 考虑下面图片中的平板电脑,你的游戏需要翻译蓝色点,在一秒钟内向左形成向右。 因此,解决方案完全取决于桌子大小和平板电脑功能

如果平板电脑的宽度假设为100,每秒渲染10帧,这意味着每秒将调用onDraw方法10次,因此,如果增量发生变化,蓝点可以以每渲染帧10像素的速率增加其位置,以便在1秒内从左侧平移到右侧,不管为什么,速度都是一样的


现在,我希望通过这些信息,您可以获得开发游戏所需的信息。

阅读这些信息应该很有用:我投票将这个问题作为离题题来结束,因为它应该被提问。如果您谈论的是“每秒帧数”,那么您的方法应该基于时间索引,即获取当前系统时间,然后循环检查,比如说,当前系统时间+1/20秒。。如果是,移动5px,获取当前系统时间并重复循环?我不是专家,但我认为基于时间的方法会提供更均匀的帧速率-如上所述,这将更适合于gamedev论坛,因为这是开发人员必须克服的一个非常常见的问题。一些Android特定的提示:我使用frame skip编写了这段代码,但不知怎的,它对我不起作用。在我的平板电脑和手机上,它只能自己运行;它的工作原理就像根本没有任何帧跳过代码一样。很抱歉,它太笨了,但我没有理解它。你是说用当前FPS除以5px的速度?我现在知道了。非常感谢jipr311!你已经投票了,我的投票很快就会公开。如果我需要在游戏开始之前,用你在那里写的这些计算得到一个恒定的速度,该怎么办?我是说,我需要在surfaceCreated中创建它。