使用物理助手库。
我试图弄清楚如何确定物理对象是否处于静止状态。有谁知道如何做到这一点或对我能做什么有任何想法?
一个示例场景是一个可以捡起和扔掉的弹力球。我尝试创建一个计时器,该计时器对每个人从与地板的碰撞事件中反弹的时间进行计时,并据此确定对象是否处于静止状态,但这不适用于用户将球向左和向右滑动的情况。
有什么建议么?
使用物理助手库。
我试图弄清楚如何确定物理对象是否处于静止状态。有谁知道如何做到这一点或对我能做什么有任何想法?
一个示例场景是一个可以捡起和扔掉的弹力球。我尝试创建一个计时器,该计时器对每个人从与地板的碰撞事件中反弹的时间进行计时,并据此确定对象是否处于静止状态,但这不适用于用户将球向左和向右滑动的情况。
有什么建议么?
如果您对底层的 Farseer 具有运行时访问权限Body
,那么您还应该可以访问属性LinearVelocity
,您可以检查其0
大小。
这是非常基本的东西。您的物理对象应该是某种类的实例,其中包含有关对象的位置、速度等信息。在任何给定时间,您应该能够检查对象的速度,并且显然它的速度 == 0 ,它处于静止状态。
到目前为止,我想出了一个简单的方法。创建两个类变量(Vector2 currentPosition,Vector2 previousPosition),然后创建一个调度器计时器,该计时器每隔一段时间就会滴答一次,并使用以下滴答方法:
void bounceTimer_Tick(object sender, EventArgs e)
{
currentPosition = ball.Position;
if (currentPosition == previousPosition)
{
// Object at rest
}
else
{
// Object moving
}
}
previousPosition = currentPosition;
}
但是它存在一些问题,例如,如果它捕捉到球在空中升起的位置,然后又回到相同的位置(非常不可能)并且以非常高的频率滴答作响,它有时会意外地捕捉到相同的位置,在滴答声的缓慢频率需要时间来确定对象是否处于静止状态,还有其他人有更好的方法吗?