我知道这个问题已经被问了很多次了,但我一直在网上寻找,找不到我的基本问题的解决方案。
我有一个SKPhysicsContact,当两个对象接触时,它会运行以下代码:
let ball = SKSpriteNode(imageNamed: "circle")
ball.position = CGPoint(x: self.frame.size.width / 3, y: self.frame.size.height / 3)
ball.size = CGSize(width: ballSize * 2, height: ballSize * 2)
ball.physicsBody = SKPhysicsBody(circleOfRadius: ballSize)
ball.physicsBody?.affectedByGravity = false
ball.physicsBody?.isDynamic = true
ball.physicsBody?.restitution = 1
ball.physicsBody?.linearDamping = 0
ball.physicsBody?.friction = 0
ball.zPosition = 2
ball.physicsBody?.categoryBitMask = PhysicsCategoryBall
ball.physicsBody?.contactTestBitMask = PhysicsCategoryAll
ball.physicsBody?.collisionBitMask = PhysicsCategoryWall
ball.run(colorBlack)
self.addChild(ball)第一次运行SKPhysicsContact代码时,会创建SKSpriteNode "ball“。显然,在第二次运行SKPhysicsContact时,游戏崩溃了,因为它试图在"ball“已经存在的情况下再次添加"ball”。
在添加另一个球之前没有removeFromParent() on ball,我该如何创建一个简单的函数/方法来在每次运行SKPhysicsContact时反复创建相同的SKSpriteNode“球”
干杯:)
发布于 2019-04-24 22:06:13
您不应该在联系时创建节点;相反,应该在其他地方创建它(在初始化所有实体或类似实体时)。你有没有试过用它做一个深拷贝,然后再用这个拷贝?E.G
let spriteCopy = spriteNode.copy() as SKSpriteNode有关更多信息,请查看How to duplicate a sprite in sprite kit and have them behave differently
https://stackoverflow.com/questions/55831208
复制相似问题