XNA如何实现引力?

时间:2012-10-04 02:45:23

标签: xna gravity

我试过在XNA开发网站上关注这个例子,但是当角色跳跃时,他们无法控制/无法阻止跳跃动作直到完成。

我如何解决这个问题?这是我的跳转代码

private void Jump()
    {
        if (mCurrentState != FoxState.Jumping)
        {

            mCurrentState = FoxState.Jumping;
            mStartingPosition = Position;
            Direction.Y = Fox_vSpeed;
            Speed = new Vector2(Fox_Speed, Fox_Speed);
        }
    }

1 个答案:

答案 0 :(得分:0)

重力只是一种影响物体加速度的力。加速度会改变物体的速度,所以你可以这样做:速度 - = Vector2.UnitY * -2;然后你可以检查地面上一个物体的碰撞,一旦发生碰撞就可以将速度的Y分量归零(如果Y分量太大(绝对值),可能会对可怜的狐狸造成伤害)。

类似的东西:

Update(GameTime gt)
{
    if(mCurrentState == FoxState.Jumping)
    {
        Speed -= Vector2.UnitY * -2;
        Position += Speed;
        if(Position.Y > GroundLevel)
        {
            Position.Y = 0;
            mCurrentState = FoxState.Walking;
        }

    }
}

如果您需要更多信息,请使用详细信息修改您的问题。