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
}