C# XNA 2D Platformer 跳跃问题
C# XNA 2D Platformer Jumping issue
我目前正在和一些朋友一起用 C# 为学校项目重制《超级马里奥世界》。
我们的跳跃工作大致正常,至少它会上下移动......事情是,好吧,你自己看看:
https://gyazo.com/f49886ea48a0653b801d6c0741709fea
这是问题的动画 gif。
它上升得非常快,几乎是瞬间,然后慢慢下滑。我尝试改变重力和跳跃助推值,但即使我部分修复了滑翔,我几乎一直在传送。我似乎无法平滑跳跃...
完整播放器class:http://pastebin.com/bCjCB2q8
我找不到问题,也许你们中的任何一位可以帮助我看看我的思维方式哪里出了问题?
我通常会使用加速度和速度 (Vector2) 实现基本的牛顿运动。
对于每次更新,您从加速度 = Vecotr2.Down * 重力开始;
你结束了
速度 += 加速度 * 游戏时间;
位置 += 速度 * 游戏时间;
gameTime = 自上次更新以来经过的总秒数。这对于让加速度和速度的数字保持在对人类有意义的一致框架中很重要。基本上,加速度是每秒速度的变化,而速度是每秒位置的变化。
要跳跃,您设置 Acceleration.Y = JumpSpeed / gameTime; //JumpSpeed = 所需的向上速度。 / gameTime 在计算速度时将 * gameTime 清零。
恐怕这个答案可能有点单薄。等我下班回家再美化一下...:)
我目前正在和一些朋友一起用 C# 为学校项目重制《超级马里奥世界》。
我们的跳跃工作大致正常,至少它会上下移动......事情是,好吧,你自己看看:
https://gyazo.com/f49886ea48a0653b801d6c0741709fea 这是问题的动画 gif。
它上升得非常快,几乎是瞬间,然后慢慢下滑。我尝试改变重力和跳跃助推值,但即使我部分修复了滑翔,我几乎一直在传送。我似乎无法平滑跳跃...
完整播放器class:http://pastebin.com/bCjCB2q8
我找不到问题,也许你们中的任何一位可以帮助我看看我的思维方式哪里出了问题?
我通常会使用加速度和速度 (Vector2) 实现基本的牛顿运动。
对于每次更新,您从加速度 = Vecotr2.Down * 重力开始; 你结束了 速度 += 加速度 * 游戏时间; 位置 += 速度 * 游戏时间;
gameTime = 自上次更新以来经过的总秒数。这对于让加速度和速度的数字保持在对人类有意义的一致框架中很重要。基本上,加速度是每秒速度的变化,而速度是每秒位置的变化。
要跳跃,您设置 Acceleration.Y = JumpSpeed / gameTime; //JumpSpeed = 所需的向上速度。 / gameTime 在计算速度时将 * gameTime 清零。
恐怕这个答案可能有点单薄。等我下班回家再美化一下...:)