gpt4 book ai didi

Swift:尝试添加一个已经有父节点的 SKNode:

转载 作者:行者123 更新时间:2023-11-30 10:03:55 24 4
gpt4 key购买 nike

我知道为什么会出现该错误,但我无法找到解决方法。我试图让对象出现然后被删除,玩家应该在它们被删除之前尝试点击它们,但每次下一个节点即将出现时它都会崩溃。如果我在它的 func 中声明它,那么一切都会出来,但我无法点击它......

代码:

let step = SKSpriteNode()

override func didMoveToView(view: SKView) {
physicsWorld.contactDelegate = self
backgroundColor = UIColor.feelFreeToColor()

self.color = self.randomNumbersInt(3)
self.showBars()
self.showScore()
let spawn = SKAction.runBlock {
//self.color = self.randomNumbersInt(3)
self.showSteps()
}
let delay = SKAction.waitForDuration(1.5)
let spawnDelay = SKAction.sequence([spawn , delay])
let spawnDelayForever = SKAction.repeatActionForever(spawnDelay)

self.runAction(spawnDelayForever)
}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
var location = touch.locationInNode(self)

if self.nodeAtPoint(location) == step {
self.score += 1
}
}
}

func showSteps() {
let createSteps = SKAction.moveByX(0, y: -self.frame.height - 30 , duration: 10)
let removeSteps = SKAction.removeFromParent()

step.color = colors[randomNumbersInt(3)]!
step.size = CGSize(width: 275, height: 30)
step.position = CGPoint(x: self.frame.width * 0.5, y: self.frame.height * 0.75)
step.physicsBody = SKPhysicsBody(rectangleOfSize: step.size)
step.physicsBody?.categoryBitMask = Config.PhysicBodyType.Steps.rawValue
step.physicsBody?.affectedByGravity = false
step.physicsBody?.dynamic = false
step.zPosition = 1
step.runAction(SKAction.repeatActionForever(SKAction.sequence([createSteps, removeSteps])))

addChild(step)
}

最佳答案

showSteps 函数中,在其中声明 step 节点,而不是在代码顶部,并为其指定一个名称 :

func showSteps() {
let step = SKSpriteNode()
...
step.name = "step"
step.color = colors[randomNumbersInt(3)]!
// etc
}

在您的 touchesBegan 方法中,您有以下 if 语句:

if self.nodeAtPoint(location) == step {
self.score += 1
}

您想要删除已点击的节点,但现在您只需检查 name 属性,如下所示:

if self.nodeAtPoint(location)?.name == "step" {
self.nodeAtPoint(location)?.removeFromParent()
self.score += 1
}

请注意,我对 Swift 不是很流利,但我认为您可能需要 if 语句中的 ? ,因为它可能不存在(例如如果您没有点击特定节点)。更熟悉 Swift 的人可以随时纠正我。

关于Swift:尝试添加一个已经有父节点的 SKNode:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119419/

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