gpt4 book ai didi

ios - 如何将多个节点添加到场景并一次移动所有节点。 swift 。 SpriteKit

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:12 25 4
gpt4 key购买 nike

我是 swift 和 spriteKit 的新手。我正在创建横向滚动游戏。我希望它从屏幕右侧的任意高度添加多个节点(称为 Impenitrible)并向左移动。我创建“Impenitrible”节点的功能是:

func spawnImpenitrible(){
Impenitrible.physicsBody = SKPhysicsBody(rectangleOfSize: Impenitrible.size)
let actionDone = SKAction.removeFromParent()
var MinValue = sand.size.height
var MaxValue = self.size.height - Impenitrible.size.height / 2
var spawnPoint = UInt32(MaxValue - MinValue)
Impenitrible.position = CGPoint(x: self.size.width - 60 , y: CGFloat(arc4random_uniform(spawnPoint)))

Impenitrible.physicsBody?.categoryBitMask = physicsCategory.impenitrible
Impenitrible.physicsBody?.contactTestBitMask = physicsCategory.sub
Impenitrible.physicsBody?.affectedByGravity = false
Impenitrible.physicsBody?.dynamic = true
self.addChild(Impenitrible)


}

我调用这个函数:

var impenitribleTimer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: Selector("spawnImpenitrible"), userInfo: nil, repeats: true)

我通过从“更新”函数中的 x 位置减去一个数字来移动它。

添加一次 Impenitrible 效果很好。但是一旦它再次调用该函数,应用程序就会崩溃并出现错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'试图添加一个已经有父级的 SKNode我哪里做错了?任何帮助都会很棒!谢谢。

最佳答案

首先,我想指出您的代码行:let actionDone = SKAction.removeFromParent() 实际上是无用的,因为您从未调用 runAction 来使用它。

错误消息很好地总结了它。 “试图添加一个已经有父节点的 SKNode”。您实际上从未调用过 removeFromParent()

添加 Impenitrible 一旦你发现效果很好,因为在开始时,Impenitrible 没有父级。后续调用将发生冲突,因为 Impenitrible 已经具有通过第一次调用添加的父级。

一个快速而肮脏的修复是在下一次调用 spawnImpenitrible 之前执行 runAction(SKAction.removeFromParent()),在某处引用 Imprenitrible

关于ios - 如何将多个节点添加到场景并一次移动所有节点。 swift 。 SpriteKit ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132851/

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