【发布时间】:2019-10-25 17:45:02
【问题描述】:
我正在制作一个超级简单的游戏,游戏从一组形状(代码块中的形状)中创建一个随机的、可点击的形状。一旦被点击,我在被点击的节点上调用 node.removefromparent() 并通过 addchild 将同一数组中的新节点添加到根节点。
这是我的问题:如果创建的随机节点与之前删除的节点相同,则它不会显示。我该如何解决这个问题?
创建函数和删除函数的代码如下:
创作
func CreateShape() {
let shape = shapes.randomElement()!
shape.anchorPoint = CGPoint(x: 0.5, y: 0.5)
shape.colorBlendFactor = 1.0
shape.color = colors.randomElement() ?? UIColor.systemPink
shape.name = "figur"
shape.zPosition = 100
shape.physicsBody = SKPhysicsBody(circleOfRadius: 150)
shape.physicsBody?.isDynamic = false
shape.position = CGPoint(x: randomPos().x, y: randomPos().y)
print(shape)
addChild(shape)
}
删除:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let touch = touches.first
let location = touch!.location(in: self)
let tappedNodes = nodes(at: location)
guard let tapped = tappedNodes.first else { return }
if tapped.name == "figur" {
let fadeOut = SKAction.fadeAlpha(to: 0, duration: 0.5)
let randomAction = actions.randomElement()!
let remove = SKAction.removeFromParent()
let sequence = SKAction.sequence([randomAction, fadeOut, remove])
sequence.timingMode = .easeInEaseOut
tapped.run(sequence)
self.isUserInteractionEnabled = false
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5, execute: {
self.isUserInteractionEnabled = true
self.CreateShape()
})
}
}
【问题讨论】:
-
如果您发布
shapes.randomElement()的代码会很有帮助 -
@0x141E 这是我的 SKSpritnodes 数组。还有更多内容,但字符限制不允许我发布更多内容:) var 形状:[SKSpriteNode] = [SKSpriteNode(imageNamed: "shapes/Arrow"), SKSpriteNode(imageNamed: "shapes/bell.fill"), SKSpriteNode (imageNamed: "shapes/bolt")]
-
只有在尝试添加与被点击的节点相同的节点时才会得到大节点?可能是时间错误并在 removeFromParent 之前添加节点(尽管这也应该给出错误)。如果选择了相同的形状,在添加之前复制该形状会发生什么?
标签: swift xcode sprite-kit