0

我已经尝试按照 XNA Development 网站上的示例进行操作,但是当角色跳跃时,他们无法控制/无法停止跳跃运动,直到完成。

我该如何解决?这是我的跳转代码

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

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

1 回答 1

0

重力只是一种影响物体加速度的力。加速度会改变物体的速度,因此您可以这样做:Speed -= 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;
        }

    }
}

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

于 2012-10-06T02:51:46.217 回答