C# 字符不';不要跳进XNA

C# 字符不';不要跳进XNA,c#,xna,sprite,C#,Xna,Sprite,我一直在研究角色移动,我创建了一种方法,在按下向上键时使角色跳跃,但角色的移动没有响应。 有人能看出哪里出了问题吗?这是我的密码: 建造师 public PlayerSprite(字符串名称、字符串magicTextureName、向量2位置、向量2速度、动画化的文本数据纹理数据、SpritePresentationInfo SpritePresentationInfo、SpritePositionInfo SpritePositionInfo、Keys leftKey、Keys rightKe

我一直在研究角色移动,我创建了一种方法,在按下向上键时使角色跳跃,但角色的移动没有响应。
有人能看出哪里出了问题吗?这是我的密码:

建造师

public PlayerSprite(字符串名称、字符串magicTextureName、向量2位置、向量2速度、动画化的文本数据纹理数据、SpritePresentationInfo SpritePresentationInfo、SpritePositionInfo SpritePositionInfo、Keys leftKey、Keys rightKey、int帧率、int开始帧、bool-breepeaanimation)
:base(名称、纹理数据、spritePresentationInfo、spritePositionInfo、帧速率、开始帧、动画)
掌握位置和速度

这在更新中

if(SpriteManager.GAME.KEYBOARDMANAGER.isFirstKeyPress(Keys.Up))
{
b原因=错误;
updateJump();
}
updateJump函数

public void updateJump()
{
跳跃位置+=跳跃速度;
if(Keyboard.GetState().IsKeyDown(Keys.Right))
跳跃速度X=3f;
else if(Keyboard.GetState().IsKeyDown(Keys.Left))
跳跃速度.X=-3f;
其他的
跳跃速度X=0f;
if(Keyboard.GetState().IsKeyDown(Keys.Up))
{
跳变位置Y-=10f;
跳跃速度Y-=5f;
hasshopped=true;
}
if(hasshopped==true)
{
浮点数i=1;
跳跃速度Y+=0.15f*i;
}
如果(jumpPosition.Y+animatedTextureData.Height()>=450)
{
hasshopped=false;
}
if(hasshopped==false)
{
跳跃速度Y=0f;
}
}
我称之为main的地方

AnimatedTextureData播放器AnimatedTextureData=(AnimatedTextureData)textureManager.Get(“播放器动画”);
SpritePresentationInfo playerAnimatedPresentationInfo=新SpritePresentationInfo(playerAnimatedTextureData.FULLSOURCERECTANGLE,1);
SpritePositionInfo playerAnimatedPositionInfo=新SpritePositionInfo(新矢量2(100700),playerAnimatedTextureData.Width(),playerAnimatedTextureData.Height(),0,2,playerAnimatedTextureData.CENTREORIGIN);
this.playerSprite=新的playerSprite(“PlayerAnimation”、“FireballAnimation”、新矢量2(50,50)、新矢量2(50,50)、playerAnimatedTextureData、playerAnimatedPresentationInfo、playerAnimatedPositionInfo、Keys.Left、Keys.Right、10,0、true);
spriteManager.Add(playerSprite);
我猜: 我不知道该功能的编程目的是什么,但如果它只检测到按下向上键,则跳转在第一帧后不再更新

if (SpriteManager.GAME.KEYBOARDMANAGER.isFirstKeyPress(Keys.Up))
{
    bPause = false;
    updateJump();
}
一旦您纠正了这一点,并且每次更新周期都调用updateJump()函数,那么只要您按住Up键,火球就会很快逃出屏幕

我猜: 我不知道该功能的编程目的是什么,但如果它只检测到按下向上键,则跳转在第一帧后不再更新

if (SpriteManager.GAME.KEYBOARDMANAGER.isFirstKeyPress(Keys.Up))
{
    bPause = false;
    updateJump();
}
一旦您纠正了这一点,并且每次更新周期都调用updateJump()函数,那么只要您按住Up键,火球就会很快逃出屏幕

我猜: 我不知道该功能的编程目的是什么,但如果它只检测到按下向上键,则跳转在第一帧后不再更新

if (SpriteManager.GAME.KEYBOARDMANAGER.isFirstKeyPress(Keys.Up))
{
    bPause = false;
    updateJump();
}
一旦您纠正了这一点,并且每次更新周期都调用updateJump()函数,那么只要您按住Up键,火球就会很快逃出屏幕

我猜: 我不知道该功能的编程目的是什么,但如果它只检测到按下向上键,则跳转在第一帧后不再更新

if (SpriteManager.GAME.KEYBOARDMANAGER.isFirstKeyPress(Keys.Up))
{
    bPause = false;
    updateJump();
}

一旦您纠正了这一点,并且每次更新周期都调用updateJump()函数,那么只要您按住Up键,火球就会很快逃出屏幕

你应该用断点调试你的代码,如果它运行正确的话,看看出了什么问题;跳跃速度Y+=0.15f*i而不是jumpVelocity.Y+=0.15f?Aw我从一本书中取出了代码,我认为自己编写的代码很糟糕,但我认为它会在以后的阶段对我有所帮助。显然不是。你应该用断点调试代码,看看有什么问题,如果它运行正确。出于好奇,为什么有
float i=1;跳跃速度Y+=0.15f*i
而不是jumpVelocity.Y+=0.15f?Aw我从一本书中取出了代码,我认为自己编写的代码很糟糕,但我认为它会在以后的阶段对我有所帮助。显然不是。你应该用断点调试代码,看看有什么问题,如果它运行正确。出于好奇,为什么有
float i=1;跳跃速度Y+=0.15f*i
而不是jumpVelocity.Y+=0.15f?Aw我从一本书中取出了代码,我认为自己编写的代码很糟糕,但我认为它会在以后的阶段对我有所帮助。显然不是。你应该用断点调试代码,看看有什么问题,如果它运行正确。出于好奇,为什么有
float i=1;跳跃速度Y+=0.15f*i而不仅仅是
jumpVelocity.Y+=0.15f
?我从一本书中取出了代码,我认为自己编写的代码很糟糕,但我认为它会在以后的阶段对我有所帮助。显然不是。我将它改为isKeyDown,我没有得到任何乐趣该函数应该让角色在屏幕上跳跃这么多,并且然后让他带着一种地心引力回来……试着简单地把“updateJump();”放在Update()方法中,我把它改成了isKeyDown,我没有得到任何乐趣这个函数应该让角色在屏幕上跳这么多,然后让他带着一种重力感回来……试着简单地在你的更新中加入“updateJump();”