gpt4 book ai didi

vector - 使用 epsilon 值确定游戏中的球是否不动?

转载 作者:行者123 更新时间:2023-12-02 02:38:12 24 4
gpt4 key购买 nike

我让球弹来弹去,每次它们碰撞时,它们的速度矢量都会因恢复系数而降低。

现在我的球 CoR 是 0.80。因此,在多次弹跳之后,我的球已经“停止”滚动,因为它们的速度已经变得非常小了。

在什么阶段检查速度值是否小到可以简单地称其为零是合适的(这样我就没有球对它们的微速度使用react的疯狂抖动)。我之前在一些论坛上读到,人们有时会使用 epsilon 常量,一些小的数字并检查它。

我是否应该定义一个 epsilon 常量并执行如下操作:

if Math.abs(velocity.x) < epsilon then velocity.x = 0

每次我更新球的速度和位置?这是通常所做的吗?将它放在我的 x 和 y 的 Vector 类 setter 中是否合理?或者我应该在计算速度时在矢量类之外进行计算。

此外,如果我将 float 用作我的速度矢量,那么合理的 epsilon 值是多少?

最佳答案

epsilon 的合理值将取决于您系统的约束。如果您以图形方式表示球,那么您的 epsilon 可能对应于每秒 0.1 像素的速度(确保您的停止概念与用户对屏幕对象停止的体验相匹配)。如果您正在进行物理模拟,您需要将其调整为您尝试测量系统的精度。

至于您检查的频率 - 这也取决于。如果你正在实时模拟某些东西,额外的检查可能会很昂贵,你会想要每 10 次更新检查一次或每秒检查一次或类似的东西。或者性能可能不是问题,您可以检查每个更新。

关于vector - 使用 epsilon 值确定游戏中的球是否不动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/354680/

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