我目前正在与一些朋友一起在C#上重拍超级马里奥世界的学校项目。
我们大致开始工作了,至少它上下起伏......事情是,好吧,亲眼看看:
https://gyazo.com/f49886ea48a0653b801d6c0741709fea 这是一个问题的动画GIF。
它极快地增强,几乎立即,然后慢慢下滑。我尝试改变重力和跳跃值,但即使我部分修复滑翔,我仍然几乎传送。我似乎无法平滑跳跃......
以下是完整的玩家类:http://pastebin.com/bCjCB2q8
我无法找到问题,也许你们中的一个可以帮我看看我的思维方式出错了吗?
答案 0 :(得分:1)
我通常会用加速度和速度(Vector2)来实现基本的牛顿运动。
对于每次更新,您都要从Acceleration = Vecotr2.Down * Gravity开始; 你结束了 速度+ =加速度*游戏时间; 位置+ =速度*游戏时间;
gameTime =自上次更新以来经过的总秒数。让加速度和速度的数字保持在对人类有意义的一致帧中非常重要。基本上加速度是每秒速度的变化,而速度是每秒位置的变化。
要跳转,请设置Acceleration.Y = JumpSpeed / gameTime; // JumpSpeed =所需的向上速度。 / gameTime在计算速度时将* gameTime归零。
害怕这个答案可能有点薄。当我下班回家时,我可以坚持...... :)