首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在swift 4.0中添加多个相同的SKSpriteNode()

在swift 4.0中添加多个相同的SKSpriteNode()
EN

Stack Overflow用户
提问于 2019-04-24 21:27:14
回答 1查看 38关注 0票数 0

我知道这个问题已经被问了很多次了,但我一直在网上寻找,找不到我的基本问题的解决方案。

我有一个SKPhysicsContact,当两个对象接触时,它会运行以下代码:

代码语言:javascript
复制
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“球”

干杯:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-24 22:06:13

您不应该在联系时创建节点;相反,应该在其他地方创建它(在初始化所有实体或类似实体时)。你有没有试过用它做一个深拷贝,然后再用这个拷贝?E.G

代码语言:javascript
复制
   let spriteCopy = spriteNode.copy() as SKSpriteNode

有关更多信息,请查看How to duplicate a sprite in sprite kit and have them behave differently

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55831208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档