gpt4 book ai didi

swift - 当我的 heroNode 与 Swift Spritekit 中的 enemyNode 接触时,我如何暂停我的背景?

转载 作者:行者123 更新时间:2023-11-28 09:08:38 25 4
gpt4 key购买 nike

当我的英雄节点与敌人接触时,我试图暂停我的背景。当我使用我在下面发布的这段代码时,背景速度不会停止,它会保持正常速度。我尝试仅在全局范围内声明“城市”,但收到一条错误消息:Attempted to add a SKNode which already has a parent。我做错了什么?

class GameScene: SKScene, SKPhysicsContactDelegate {    
let city = SKSpriteNode(imageNamed: "skyline")
}

override func didMoveToView(view: SKView) {
repeatCity()
}


func addCity() {
let city = SKSpriteNode(imageNamed: "skyline")
let moveToRight = SKAction.moveByX(-1000, y: 0, duration: 5.0)
let repeatAction = SKAction.repeatActionForever(moveToRight)



city.position = CGPointMake(self.size.width / 0.7, self.size.height / 1.9)
city.zPosition = 13
city.setScale(0.9)
city.runAction(repeatAction)
addChild(city)


}

func repeatCity() {
let generateBlocks = SKAction.sequence([
SKAction.runBlock(self.addCity),
SKAction.waitForDuration(3.5)])
let endlessAction = SKAction.repeatActionForever(generateBlocks)
runAction(endlessAction)

}
func didBeginContact(contact:SKPhysicsContact){

if firstBody.categoryBitMask == HeroCategory && fourthBody.categoryBitMask == EnemyCategory {

city.speed = 0
theHero.physicsBody?.affectedByGravity = true
println("contactwithEnemy!!!")

}
}

最佳答案

第一个问题是,您声明了一个类变量 city,但是在您的 add 方法中您使用的不是类变量,而是一个自己的城市变量。所以你应该删除那个类变量:

let city = SKSpriteNode(imageNamed: "skyline")

现在,您在 city 节点上永远重复的操作一直在运行。要停止该操作,您应该从联系人处的 city 节点中删除所有操作:

self.removeAllActions()

关于swift - 当我的 heroNode 与 Swift Spritekit 中的 enemyNode 接触时,我如何暂停我的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128464/

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