gpt4 book ai didi

collision-detection - 游戏应该只依赖帧率吗?

转载 作者:行者123 更新时间:2023-12-04 08:05:50 28 4
gpt4 key购买 nike

我希望您对这个问题提出建议...

为简单起见,我将只考虑 x 轴。

对位置 10 的对象进行成像,其宽度也是 10 个单位,每秒向前移动 100 个单位,并且由于低帧,每次更新时它应该移动 80 个单位。

在调用第一次更新后,它的位置现在是 90,并且在位置 120 处还有另一个相同大小的对象。

下次更新,将物体移动到170位置。考虑到我需要实现碰撞检测,计算Update之前或之后的碰撞,都不行。

现在来一个简单的问题...

在这种情况下该怎么办?

做类似的事情:

Position start = destinationPos - currentPos;
for (int i; i < start; i++)
if (IsColliding(movingObj.Position + i, staticObj))
//do the colliding stuff here

我不喜欢这个解决方案,对于这种情况可能没问题,但是如果你有 x、y、z 和很多移动的物体怎么办?

另一个我认为会很好但我不确定它是否可靠的解决方案是让另一个线程在循环中进行所有这些计算。

这个线程就像一个无限循环,每次迭代我都会计算 elapsedTime我相信它会非常小并不断移动并计算碰撞,而渲染线程会慢得多,它将获取对象的当前状态并对其进行渲染。

大家怎么看?

最佳答案

幸运的是,对于我们这些数学笨蛋来说,这是一个或多或少已经解决的问题。您描述的问题已通过动态碰撞检测解决,动态碰撞检测用于确定两个对象是否在帧之间发生碰撞,对于某些类型的碰撞,甚至可以准确地告诉您碰撞发生的时间,因此您可以更新世界的状态正确。

如果你对自己实现碰撞检测算法不是特别感兴趣,我会考虑使用一个已经做这种事情的库:

  • Bullet physics engine
  • G3D
  • Geometric Tools

  • 关于这个主题的许多好书之一是 Real Time Collision Detection .

    关于collision-detection - 游戏应该只依赖帧率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902147/

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