Да, вы можете создать. единственная проблема, которая у вас есть, - это создание нового узла каждый раз, когда вызывается обновление. В настоящий момент вы не можете видеть несколько узлов, потому что вы размещаете их друг над другом, если вы пытаетесь изменить положение mySquare при каждом вызове обновления, вы увидите, что у вас есть несколько узлов. созданный, который не эффективен, скоро у вас кончатся частоты кадров. поскольку у вас нет анимации при движении, вы не видите разницы.
override func update(_ currentTime: TimeInterval) {
let mySquare = SKShapeNode(rectOf: CGSize(width: 50, height: 50))
mySquare.fillColor = SKColor.blue
mySquare.lineWidth = 1
mySquare.position = CGPoint(x: randomX, y: randomY)
self.addChild(mySquare)
}
Изменение положения X и Y даст вам возможность увидеть добавление узлов в другое положение. на экране.
если по какой-либо причине вы хотите создать свой узел mySquare в обновлении , вы можете сохранить ссылку на узел или выполнить поиск узла в родительском узле, если он доступен затем не добавляйте
var mySquare: SKShapeNode
Затем в обновлении проверьте, если ваш квадратный узел не равен нулю или имеет тот же
override func update(_ currentTime: TimeInterval) {
if mySquire == nil {
mySquare = SKShapeNode(rectOf: CGSize(width: 50, height: 50))
mySquire.name = "your square name"
mySquare.fillColor = SKColor.blue
mySquare.lineWidth = 1
mySquare.position = CGPoint(x: randomX, y: randomY)
self.addChild(mySquare)
}
}
Примечание: вы можете даже проверить имя как
if mySquare.name == "your square name"
тогда не добавляйте его