Ios 使玩家双跳精灵装备迅速

Ios 使玩家双跳精灵装备迅速,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我已经为我的玩家实现了一次跳跃。但是如果用户点击两次,我希望玩家能够进行双跳 如何使下面的函数检查跳转是否仍在持续时间内,以便他们可以在需要时再次点击跳转 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { var isJumping = false var isDoubleJumping = false if mario.action(forKey: "j

我已经为我的玩家实现了一次跳跃。但是如果用户点击两次,我希望玩家能够进行双跳

如何使下面的函数检查跳转是否仍在持续时间内,以便他们可以在需要时再次点击跳转

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    var isJumping = false
    var isDoubleJumping = false

    if mario.action(forKey: "jump") == nil && isJumping {

        let marioTextureJump = SKTexture(imageNamed: "mariojump.png")

        let animation = SKAction.animate(with: [marioTextureJump], timePerFrame: 0.6)

        mario.run(animation)

        mario.run(jumpAction, withKey: "jump")

        if isJumping {

            isDoubleJumping = true
            isJumping = false
        }

        else {

            isJumping = true
            isDoubleJumping = false
        }
    }
}
override func touchsbegind(touch:Set,带有事件:UIEvent?){
var=false
var isDoubleJumping=false
如果mario.action(forKey:“jump”)==nil&&isJumping{
让mariotextump=SKTexture(图像名为:“mariojump.png”)
让animation=SKAction.animate(使用:[mariotextureamp],timePerFrame:0.6)
马里奥。奔跑(动画)
马里奥。奔跑(跳跃动作,按键:“跳跃”)
如果我在跳{
isDoubleJumping=true
isJumping=false
}
否则{
是真的吗
isDoubleJumping=false
}
}
}

实现这一点的最简单方法可能是在场景中添加两个标志

isPlayerJumping = false
isPlayerDoubleJumping = false
然后在函数中检查并设置这些变量

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent {

    //if the player is already double jumping don't let them jump again until finished
    guard !isDoubleJumping else { return }

    let animation = SKAction.animate(with: [playerTextureJump], timePerFrame: 0.6)

    player.run(animation)

    if isJumping {
        isDoubleJumping = true
        isJumping = false

        player.run(jumpAction, withKey: "jump") {
            self.isDoubleJumping = false
        }
    }
    else {
        isJumping = true

        player.run(jumpAction, withKey: "jump") {
            self.isJumping = false
        }
    }
}
在跳转动作结束时,您必须运行一段代码来重置变量

SKAction.run {
    isJumping = false
    isDoubleJumping = false
}
你甚至可以改变你的触摸中的内联变量,就像这样开始

player.run(jumpAction, withKey: "jump") {
    self.isPlayerJumping = false
    self.isPlayerDoubleJumping = false
}

我没有玩家课程,所以这不起作用。你能编辑你的答案来解释这个问题吗?谢谢,对不起,我还是没弄好。我以前从未使用过守卫,所以我不知道它是如何工作的。我编辑了我的代码来告诉你我在哪里。guard只是一个花哨的“if语句”,我已经调整了我的答案来告诉你差异的完美之处。现在效果很好!谢谢伟大的祝你在比赛中好运!
player.run(jumpAction, withKey: "jump") {
    self.isPlayerJumping = false
    self.isPlayerDoubleJumping = false
}