【问题标题】:Avoid multiple jumping避免多次跳跃
【发布时间】:2014-06-30 19:44:14
【问题描述】:

只是在玩 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))
}

我尝试在调用touchesBegan() 之前设置一个布尔值isJumping 并在jump() 中检查它,但没有成功...

func jump(timeSinceLast: Float) {

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

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

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

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

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

    如果您的地面具有更复杂的形状,那么您需要在施加脉冲之前检测您的玩家和地面对象之间是否存在碰撞。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多