物体在XNA的地板上振动

时间:2014-10-29 20:24:40

标签: c# xna physics

我尝试创建一个简单的基于物理的“游戏”,你可以在那里产生球,然后它们会受到不同的自然力量的影响,如重力。

但是我有一个问题,当球到达地板时,它会不断受到重力的影响。它有点震动。 Here's一个关于它外观的简单例子。

以下是碰撞检测和重力计算的代码。

public void CheckBounds(int maxHeight, int maxWidth)
{
    if (this.position.Y + (radius + radius) > maxHeight)
        this.velocity.Y = -Math.Abs(velocity.Y * 0.65f); // 0.65 is the "bouncyness"
}

以下是主要的更新部分

for (int i = 0; i < balls.Count; i++ )
{
    Ball b = balls[i];

    for (int k = 0; k < balls.Count; k++) // check for collision with other balls
    {
        if (balls[i] == balls[k])
            continue;

        if (balls[i].Colliding(balls[k]))
            balls[i].Collide(balls[k]);
    }

    b.velocity.Y += gravitationalPull; // a gravity constant
    b.CheckBounds();
    b.position = Vector2.Add(b.position, b.velocity);
}

有谁知道如何修复振动?我尝试设置一个最小的速度值,计算重力(如果velocity.y&lt;某个值然后不计算),但是然后球在碰撞时甚至在产生时停在空中。

0 个答案:

没有答案