首页 > 解决方案 > 如何使用 C# 和 XNA 进行双跳?

问题描述

这是我当前的单次跳跃代码,来自用户的输入将 jump 设置为 true 并且单次跳跃没有错误,但是我无法为我的游戏生成第二次空中跳跃。我不得不在学校没有统一的情况下这样做,所以它只适用于矩形。

if (jumping) //only run when jump has been initiated by space or A
{
    rect.Y = centreY - (int)(Math.Sin(angle) * range); //move player up to a maximum of range's value

    angle += speedY; //gradually reduce player's y by reducing angle's value

    newCentreY = rect.Y;

    if (angle > Math.PI) //reset player to not jumping when angle is greater than 3.14
    {
        angle = 0;
        jumping = false;
    }
}

这是跳转的输入处理程序:

if (userControl.Buttons.A == ButtonState.Pressed || keystate.IsKeyDown(Keys.Space)) //jump when A or space is pressed 
{ 
    jumping = true; 
} 
Jump(userControl, keystate); //jump method

标签: c#xna

解决方案


我认为你应该让你angle继续0跳跃。

if (doubleJumping)
{
    angle = 0;
    doubleJumping = false;
}
if (jumping) //only run when jump has been initiated by space or A
{
    rect.Y = centreY - (int)(Math.Sin(angle) * range); //move player up to a maximum of range's value

    angle += speedY; //gradually reduce player's y by reducing angle's value

    newCentreY = rect.Y;

    if (angle > Math.PI) //reset player to not jumping when angle is greater than 3.14
    {
        angle = 0;
        jumping = false;
    }
 }

推荐阅读