gpt4 book ai didi

java - 移动不受 FPS 影响的对象

转载 作者:行者123 更新时间:2023-12-02 04:18:46 28 4
gpt4 key购买 nike

您好,我目前正在尝试移动 libgdx android 应用程序中的对象。主要问题是我无法在不受 fps 影响的情况下移动对象。到目前为止,我正在使用这样的增量时间:

public void move(float delta){
this.setX(this.getX() + this.speed.x * delta); //moving just along x axis to keep it simple
this.speed.x += 1 * delta //some acceleration;
}

每一帧都会调用 move 方法。想象一下,我有两台设备,一台为 1fps,一台为 2fps,现在我们以零开始速度移动一个对象 1 秒。该对象在第一个设备上不会移动,而在第二个设备上会移动。总而言之,如果 fps 增加,物体移动速度会稍微快一些。

到目前为止,这个小小的差异没有问题,但在这种情况下,对象移动 100% 同步很重要,因为我想测量对象到达某个点所需的时间。

那么到达这里的正确方法是什么?

最佳答案

实际上...将对象乘以增量时移动对象的方式已经使其与 FPS 无关:) 让我们看下图以更好地理解它:

enter image description here

open the picture in full size!

尽管在 2FPS 下每秒两次向 x 添加一些值,但该值比 1FPS 时小两倍,这意味着在每个整数时间点,对象的 x 都是相同的 .

如果你不将其乘以增量,那么你担心的情况就会发生 - 那么每秒你会在 2FPS 时比 1FPS 时添加相同的值两次 - 这意味着一秒后具有 2FPS 时的对象会比具有 1FPS 时多两倍

唯一受 FPS 影响的是渲染平滑度 - 但如果您刷新屏幕两次以上,显然会更加平滑。

<小时/>

顺便说一句 - 如果您正在使用 Scene2D 并寻找其他一些方法来移动对象,请查看 Actions特别是 MoveToAction。看看this tutorial获取一些信息。

关于java - 移动不受 FPS 影响的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33027894/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com