正确实施“双跳”


23

我正在使用Corona开发2D iPhone游戏(试用版,所以我不能使用他们的论坛)。游戏涉及角色从天上掉下来,我正在尝试为角色实施“双跳”,以使他能够在跌倒时跳起来。我正在使用Corona的物理库来使角色掉落,到目前为止,让他跳跃的最佳方法是使用垂直脉冲法

object:applyLinearImpulse(0, -0.4, object.x, object.y)

我面临的问题是,当角色刚开始时(垂直速度低),他跳得很高;而当他摔倒了一段时间(垂直速度高)时,跳得可以忽略不计。我猜测最好的解决方案是使用某种方程式,将速度作为输入,以使跳跃与速度无关,但是我无法弄清楚该方程式是什么。

好的,这就是我的全部想法。最终的问题是,您如何精确地实现物理双跳?有没有适合我的问题的方程式?我应该采取其他方法吗?之前在Smash Bros等游戏中就已经做到了,所以有一个可重复的解决方案,对吧?

Answers:


37

只需将垂直速度设置为零,然后调用用于执行第一个跳转的相同代码即可。


4
哦。那...实际上效果很好。如此简单,以至于我现在由于不考虑它而感到愚蠢。那好吧。谢谢!
Jesse J

5
通常会使事情变得复杂得多:)
亚当·哈特

2
优雅的答案!
lathomas64 2011年

1

我不确定,但是我认为类似UT2K4的游戏可能会使用以下逻辑:
if(已跳&&!翻了两倍但还没有触及地&& speed.up约为0.0f)

您的y或z分量在哪里(取决于哪个位置),
这意味着您的播放器只能在处于其第一跳的最大高度并即将再次开始下降时进行两次跳。
我喜欢这种方法,因为它会产生一点技巧(您必须定时将其发生在“ velocity.up约为0.0f”内)。
根据您的需要,您可以将“大约0.0f”偏向正数,以使它们仅在例如向上移动时才会翻倍。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.