0
我在尝试运行我的游戏时出现错误:“试图添加一个已经有父母的SKNode”。试图添加一个已经有父错误的SKNode
如果我将SKSpriteNode本地添加到函数中,它运行良好。但是,当我尝试在全球范围内宣布它时,我会遇到该错误。任何帮助解决这个错误将是伟大的。我认为它与self.bee.removeFromParent()
有关,但我无法使其工作。
让蜜蜂= SKSpriteNode(imageNamed: “小蜜蜂”)
runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock(addBee),
SKAction.waitForDuration(0.5)
])
))
FUNC addBee(){
bee.name = "Bee"
let actualY = random(min: 0, max: size.height+bee.size.height) // random
bee.position = CGPoint(x: size.width + bee.size.width/2, y: actualY)
self.addChild(bee)
let slopeToPlayer = (bee.position.y - player.position.y)/(bee.position.x - player.position.x)
let constant = bee.position.y - slopeToPlayer * bee.position.x
let finalX : CGFloat = bee.position.x < player.position.x ? 500.0 : -500.0 // Set it to somewhere outside screen size
let finalY = constant + slopeToPlayer * finalX
let distance = (bee.position.y - finalY) * (bee.position.y - finalY) + (bee.position.x - finalX) * (bee.position.x - finalX)
let beeSpeed = random(min: CGFloat(50), max: CGFloat(150))
let timeToCoverDistance = sqrt(distance)/beeSpeed
let moveAction = SKAction.moveTo(CGPointMake(finalX, finalY), duration: NSTimeInterval(timeToCoverDistance))
let removeAction = SKAction.runBlock {() -> Void in
self.bee.removeFromParent()
}
bee.runAction(SKAction.sequence([moveAction,removeAction]))
}
那么我该如何去创建它们,以便在写入碰撞检测时可以引用它们?你给我的代码是我以前的,并且工作正常,但是我不能在另一个函数中引用蜜蜂,因为它只存在于addBee()中。 – bandoy123 2015-02-09 10:11:29
当你从SKPhysicsBody.node属性调用它时,你将得到'didContactBegin'函数内部发生冲突的节点的引用。这还不够吗? – rakeshbs 2015-02-09 10:13:30
感谢您的帮助!我一直试图在最近几天里添加这个代码来进行碰撞,但我无法完成它的工作!玩家和蜜蜂之间的碰撞被发现时,我现在要做的就是println(“游戏结束”)。 – bandoy123 2015-02-09 10:18:01