gpt4 book ai didi

java - 如何检查 body 是否几乎停止在 libgdx + box2d 中移动

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:34 26 4
gpt4 key购买 nike

所以,我有一个球员 body + 固定装置等,它本质上是一个会弹跳的球。

我想检测它何时“差不多”完成移动。

目前我这样做:

public Boolean isStopped() {
return body.getLinearVelocity().x <= 0.3f && body.getLinearVelocity().y <= 0.3f;
}

这主要是可行的,问题是当玩家击中某物时,有一个瞬间速度为 0,因此返回 true。我真正想要的是在它基本完成时返回 true 。最好在我调整游戏世界的物理特性时可以设置为任何我喜欢的范围内。

我无法使用检查它是否正在 sleep ,因为这来得太晚了,直到它停止对它施加力之后它才会 sleep ,我需要就在之前。

我可以只存储它停止了多长时间/停止的步数,但我希望有一个我错过的很好的预先存在的方法。

有什么想法吗?

最佳答案

您可以跟踪最近的运动并通过在每个时间步混合一点当前速度来更新它:

float speedNow = body.getLinearVelocity().len();
recentSpeed = 0.1 * speedNow + 0.9 * recentSpeed;
if ( recentSpeed < someThreshold )
... do something ...

开始时,您需要将 recentSpeed 设置为一个合适的高值,否则它可能会在第一个时间步低于阈值。

关于java - 如何检查 body 是否几乎停止在 libgdx + box2d 中移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21999974/

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