如何使用SpriteKits内置物理引擎让玩家精灵“跳跃”

时间:2014-12-02 22:26:31

标签: ios sprite-kit game-physics

当用户点击屏幕时,我试图找到一种让玩家精灵跳跃的可靠方法,我感到有点困惑。

到目前为止,我一直这样做:

if(self.physicsBody.velocity.dy == 0.0 && _shouldJump) {
  [self.physicsBody applyImpulse: CGVectorMake(0.0, 195.0);
}

哪个有效,但我正在寻找更可靠,更好的东西。具体来说,现在,当用户滑下斜坡时,或者在块的边缘即将跌落时,用户不能跳跃(因为.dy并非完全为0)。我希望玩家也可以跳过这些情况。

我尝试了.dy < 5.0 && .dy > -5.0之类的东西,但是当他处于当前跳跃的顶部时,他能够跳跃,让他跳得更高。

有没有办法检查哪个physicsBodies我的玩家精灵与之联系?或者您还有其他建议吗?

我已阅读 Ray Wenderlich的教程,了解如何创建像<超级马里奥一样的平台游戏,但他们正在构建自己的自定义物理引擎。我想坚持使用SpriteKit内置的那个,主要是因为碰撞处理和检测。

编辑1:

请记住,每当玩家在_isOnGround = YES触地时,我都无法设置标记didBeginContact,因为他有弹性,并且会在到达之前上下反弹几次停。我希望用户在他拿着屏幕时能够在接触地面时立即跳跃,但这不是必需的。

0 个答案:

没有答案