2

使用物理助手库。

我试图弄清楚如何确定物理对象是否处于静止状态。有谁知道如何做到这一点或对我能做什么有任何想法?

一个示例场景是一个可以捡起和扔掉的弹力球。我尝试创建一个计时器,该计时器对每个人从与地板的碰撞事件中反弹的时间进行计时,并据此确定对象是否处于静止状态,但这不适用于用户将球向左和向右滑动的情况。

有什么建议么?

4

3 回答 3

2

如果您对底层的 Farseer 具有运行时访问权限Body,那么您还应该可以访问属性LinearVelocity,您可以检查其0大小。

于 2011-07-24T23:21:45.473 回答
1

这是非常基本的东西。您的物理对象应该是某种类的实例,其中包含有关对象的位置、速度等信息。在任何给定时间,您应该能够检查对象的速度,并且显然它的速度 == 0 ,它处于静止状态。

于 2011-07-24T16:10:11.707 回答
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;
    }

但是它存在一些问题,例如,如果它捕捉到球在空中升起的位置,然后又回到相同的位置(非常不可能)并且以非常高的频率滴答作响,它有时会意外地捕捉到相同的位置,在滴答声的缓慢频率需要时间来确定对象是否处于静止状态,还有其他人有更好的方法吗?

于 2011-07-24T17:21:46.043 回答