我一直在使用 XNA 开发一个简单的平台游戏。我在制定一个好的跳跃算法时遇到了一些麻烦。在摆脱了杂乱无章的跳跃算法之后,我剩下的就是。
if (keystate.IsKeyDown(Keys.W))
{
spritePosition.Y = spritePosition.Y - 10;
}
我意识到这是一个非常简单的开始,但任何提示都会很棒。我是一名自学成才的程序员,所以我可能会忘记一些术语,我倾向于发现查看实际代码是最好的学习方式。谢谢。
当您跳跃(物理上)时,您是在向 Y 速度矢量添加一个量,而不是向您的位置矢量添加量。将您的位置移动 10 意味着您只是向上传送 10 个刻度。
尝试调整速度,然后让你的主循环改变位置。记住重力向下的加速度!
编辑:从下面的评论添加链接到物理教程。 rodedev.com/tutorials/gamephysics
尝试以下操作:
if(Input.GetKeyDown(KeyCode.W))
{
// your code here
}
它将使玩家每次按下W
时,他们只会去,直到他们可以W
再次按下。您始终可以设置跳跃率并使其每秒钟只能跳跃一次。