避免多次跳跃

时间:2014-06-30 19:44:14

标签: swift sprite-kit

只是玩SpriteKit和Swift,我正在制作一个小立方体跳跃。

我无法理解如何做到但我想避免多次触摸:如果我在立方体飞行时触摸屏幕,它将再次跳跃......

我让玩家跳上touchesBegan

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    player.jump(Float(self.timeSinceLast))
}

方法jump()

func jump(timeSinceLast: Float) {
    self.sprite.physicsBody.applyImpulse(CGVector(0, self.jumpingForce * timeSinceLast))
}

我尝试在isJumping中的通话前设置一个布尔touchesBegan()并在jump()中检查它但没有成功...

func jump(timeSinceLast: Float) {

    if !self.isJumping {
        self.isJumping = true;
        self.sprite.physicsBody.applyImpulse(CGVector(0, self.jumpingForce * timeSinceLast))
        self.isJumping = false;
    }
}

这段代码有什么问题?谢谢您的帮助! : - )

1 个答案:

答案 0 :(得分:1)

您需要一种方法来弄清楚如何检测您的玩家是否与地面接触。当你完成对角色的冲动时,它仍然必须向上移动然后向下移动。这需要时间,比施加冲动所花费的时间长得多。

如果你的地面平坦,你可以做一些简单的事情,比如检查角色位置的y值,以确定是否适合应用冲动。

如果您的地面形状更复杂,那么在应用冲动之前,您需要检测玩家与地面物体之间是否发生碰撞。