【问题标题】:C# XNA 2D Platformer Jumping issueC# XNA 2D Platformer 跳跃问题
【发布时间】:2016-03-25 19:30:47
【问题描述】:

我目前正在和一些朋友一起用 C# 重制超级马里奥世界,以完成一个学校项目。

我们的跳跃大致正常,至少它会上下波动......问题是,好吧,你自己看看:

https://gyazo.com/f49886ea48a0653b801d6c0741709fea 这是问题的动画 gif。

它上升得非常快,几乎是瞬间,然后慢慢滑落。我尝试更改重力和跳跃助推值,但即使我部分修复了滑行,我仍然几乎保持传送。我似乎无法平滑跳跃...

这是完整的播放器类:http://pastebin.com/bCjCB2q8

我找不到问题,也许你们中的一个可以帮助我看看我的思维方式哪里出错了?

【问题讨论】:

    标签: c# xna 2d 2d-games


    【解决方案1】:

    我通常会使用加速度和速度 (Vector2) 来实现基本的牛顿运动。

    对于每次更新,您从 Acceleration = Vecotr2.Down * Gravity 开始; 你以 速度 += 加速度 * 游戏时间; 位置 += 速度 * 游戏时间;

    gameTime = 自上次更新以来经过的总秒数。这对于让加速度和速度的数字保持在对人类有意义的一致框架中很重要。基本上加速度是每秒速度的变化,而速度是每秒的位置变化。

    要跳跃,你设置 Acceleration.Y = JumpSpeed / gameTime; //JumpSpeed = 所需的向上速度。 /gameTime 在计算速度时将 *gameTime 清空。

    恐怕这个答案可能有点薄。下班回家后我可以美化... :)

    【讨论】:

    • 非常感谢您的回答!我会看看我能用这些信息做什么,再次感谢你!我会让你更新:) 编辑:你对Acceleration = Vector2.Down * Gravity 是什么意思? Vector2.Down 是什么?
    • 抱歉,混合 Vector2 和 Vector3 :P 还不如使用 Acceleration = new Vector2(0f, Gravity);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    相关资源
    最近更新 更多