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