gpt4 book ai didi

ios - 我需要一种方法来创建更多硬币并在玩家收集硬币或硬币离开屏幕时将其移除

转载 作者:行者123 更新时间:2023-11-28 07:02:10 25 4
gpt4 key购买 nike

我需要一种方法来创建更多硬币并在玩家收集硬币或硬币离开屏幕时将其移除。游戏运行良好,但当我尝试添加 NSTimer 时像这样:

var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("genrateRandomPositions"), userInfo: nil, repeats: true)

游戏崩溃并报错:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attemped to add a SKNode which already has a parent: <SKSpriteNode> name:'(null)' texture:[<SKTexture> 'coin' (50 x 68)] position:{1024, 350} size:{50, 68} rotation:0.00 '

我知道这是什么意思,同一个父节点有多个节点,但我需要知道是否有一种方法可以代替 NSTimer .

我的 addCoin 函数:

   func addcoins(positionY:CGFloat){

self.coinTexture = SKTexture(imageNamed: "coin")
self.coin = SKSpriteNode(imageNamed: "coin")
self.coin.position = CGPointMake(CGRectGetMaxX(self.frame), positionY)
self.coin.physicsBody = SKPhysicsBody(circleOfRadius: self.coin.size.width / 2 )
self.coin.physicsBody?.dynamic = false
self.coin.physicsBody?.categoryBitMask = coinCategory
self.coin.physicsBody?.contactTestBitMask = helicopterCategory
self.coin.physicsBody?.collisionBitMask = NoneCategory
self.coin.physicsBody?.usesPreciseCollisionDetection = true
var moveCoin = SKAction.moveByX(-bgTexture.size().width, y: 0, duration: bgSpeed)
self.addChild(self.coin)
self.coin.runAction(moveCoin)
}

最佳答案

每次制作新币都需要制作一个新节点,添加到场景后运行SKAction。最后,错误意味着当节点已经有父节点时,您正在向父节点添加节点。该错误意味着一个父节点有多个节点,因为这不应引发错误。这是一些更新的代码:

func addcoins(positionY:CGFloat){

var coinTexture = SKTexture(imageNamed: "coin")
var newCoin = SKSpriteNode(imageNamed: "coin")
newCoin.position = CGPointMake(CGRectGetMaxX(self.frame), positionY)
newCoin.physicsBody = SKPhysicsBody(circleOfRadius: coin.size.width / 2 )
newCoin.physicsBody?.dynamic = false
newCoin.physicsBody?.categoryBitMask = coinCategory
newCoin.physicsBody?.contactTestBitMask = helicopterCategory
newCoin.physicsBody?.collisionBitMask = NoneCategory
newCoin.physicsBody?.usesPreciseCollisionDetection = true
var moveCoin = SKAction.moveByX(-bgTexture.size().width, y: 0, duration: bgSpeed)
addChild(coin)
coin.runAction(moveCoin)
}

关于ios - 我需要一种方法来创建更多硬币并在玩家收集硬币或硬币离开屏幕时将其移除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768064/

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