gpt4 book ai didi

ios - 让玩家双跳 Sprite Kit Swift

转载 作者:搜寻专家 更新时间:2023-10-31 22:26:48 25 4
gpt4 key购买 nike

我已经为我的播放器实现了一次跳跃。但我希望播放器能够在用户点击两次时进行二段跳。

我如何让下面的这个功能检查跳跃是否仍在持续时间,以便他们可以在需要时再次点击和跳跃?

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
}
}
}

最佳答案

实现这一目标的最简单方法可能是向场景中添加 2 个标志

isPlayerJumping = false
isPlayerDoubleJumping = false

然后在您的 touches 函数中检查并设置这些变量

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
}
}
}

EDIT

如果你不想使用守卫,你可以在适当的地方放置一个if语句

if isPlayerDoubleJumping {
return
}

在 jumpAction 结束时,您必须运行一段代码来重置变量

SKAction.run {
isJumping = false
isDoubleJumping = false
}

你甚至可以像这样在你的触摸开始时改变内联变量......

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

关于ios - 让玩家双跳 Sprite Kit Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45598557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com