java - 调节游戏中的步速

标签 java math game-physics

我正在开发一款游戏,我需要创建一种方法来创建运动。它需要做的是取x ytarget x y值并创建 float[]其内部的运动被定义为一定的时间。该运动将在每一帧中使用一定数量的帧,直到在特定时间内达到目标。这是我到目前为止所拥有的。

public void calculateRoute(int time) {
    if(x > tx){
        movement[0] = -((x - tx) / time);
    }else if(x < tx){
        movement[0] = ((tx - x) / time);
    }else if(x == tx){
        movement[0] = 0;
    }

    if(y > ty){
        movement[1] = -((y - ty) / time);
    }else if(y < ty){
        movement[1] = ((ty - y) / time);
    }else if(y == ty){
        movement[1] = 0;
    }
}

问题是目标越远,移动速度越快。我想让运动调节到一定的速度但仍能达到目标。基本上我需要计算 time可变为无论距离多远,速度始终相同的速度。我尝试将运动设置为 1,但它会错过其目标,因为 x可能是 500,而 y可能是 700。最终会是 x = 700, y = 700 。任何帮助表示赞赏! :)

还有一些示例代码就更好了!

最佳答案

需要考虑的一些事情:

  1. 在当今的多核、多任务计算机中,您无法可靠地预测每个渲染帧或每个逻辑/物理/AI 更新之间会经过多少时间。
  2. 正如您在解决方案中发现的那样,您的速度计算是基于距离的,而它需要每单位时间移动的单位(可能是像素/秒,或 block /秒 -任何在您的游戏中有意义的度量单位)。
  3. 当您在世界中移动物体时,通常最好测量自上次移动物体以来耗时,然后将耗时乘以您的速度,因为速度*时间=距离搬家了

如果您使用游戏引擎,这将是一个非常好的主意,因为这是一个已解决的问题,它们将提供某种“增量”时间,告诉您自上次逻辑/物理以来已经过去了多少时间/人工智能更新。您可以使用该值。

关于java - 调节游戏中的步速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335464/

相关文章:

java - Lucene 搜索匹配短语中的任何单词

java - 如何为本地镜像配置DL4j

java - 在 Java 中计算协方差矩阵

swift - 传递对 fft 函数的引用时,输出数组的大小应该是多少?图像处理

ios - 为什么 didBegin 没有关于接触体的数据?

python - 在两个二维物体之间的弹性碰撞中,物体之间的总速度(速度的大小)是否守恒?

java - 由于 org.eclipse.core.runtime 无法启动 eclipse

java - 在循环下从数组填充 jtable

python - 快速找到全零答案的方法

javascript - d3 中的弹跳球