使用physics helper库。
我正在试图弄清楚如何确定物理对象是否处于静止状态。有谁知道怎么做或对我能做什么有任何想法?
一个示例场景是一个可以拾取和抛出的弹力球。我尝试创建一个计时器,计时每个人从地板上的碰撞事件反弹,并根据此确定对象是否处于休息状态,但如果用户向左右滑动球,则不起作用。
有什么建议吗?
答案 0 :(得分:2)
如果您具有对基础Farseer Body
的运行时访问权限,那么您还应该可以访问属性LinearVelocity
,您可以检查0
幅度。
答案 1 :(得分:1)
这是非常基本的东西。你的物理对象应该是某种类的实例,它包含有关对象位置,速度等的信息。在任何给定的时间,你应该能够检查对象的速度,显然它的速度== 0 ,它处于休息状态。
答案 2 :(得分:0)
到目前为止,我想出了一个简单的方法。创建两个类变量(Vector2 currentPosition,Vector2 previousPosition),然后创建一个每隔一段时间勾选一次的调度程序计时器并使用以下tick方法:
void bounceTimer_Tick(object sender, EventArgs e)
{
currentPosition = ball.Position;
if (currentPosition == previousPosition)
{
// Object at rest
}
else
{
// Object moving
}
}
previousPosition = currentPosition;
}
虽然它存在一些问题,例如,如果它捕捉到空中的球位置然后在相同的位置(非常不可能)向后退回,并且在非常高的频率下滴答作响,它有时会捕获相同的位置出乎意料的是,在滴答的频率很慢的情况下确定对象是否处于休息状态需要时间,其他人有更好的方法吗?