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