【发布时间】:2016-11-18 17:44:56
【问题描述】:
第一次编码,我想我会从 Spritekit (Swift 3) 的游戏开始。我遇到了一个问题,当我将精灵节点添加到场景时,它会复制它。我还应该提到我这样做是作为一个重复出现的功能,我随机创建四个障碍之一。
我设置了一个定时机制来使函数定期运行。 func 然后从 0-3 生成一个随机数,然后使用 switch/case 方法,该方法应该只创建四个选项中的一个,但它总是创建 2 个(仍然是随机的,因此它可能是 2 个重复项或 2 个单独的选项重叠)。我也尝试过“if, else if...”语句,结果相同。
我已经在没有计时器和随机数生成的情况下对此进行了测试,它们都不是问题,导致我相信它要么是“选择”(switch 或 else if)方法,要么我使用 addChild 错误。
关于问题可能是什么的任何想法,或随机生成精灵的替代解决方案?
提前致谢!
此代码还有很多内容,但我已将其简化为熊的基本要素,但我仍然得到重复。
let movementAmount = arc4random() % UInt32(self.frame.height / 2)
let wallOffset = CGFloat(movementAmount) - self.frame.height / 4
let xCoordinate = self.frame.midX
let yCoordinate = self.frame.midY + (self.frame.height / 2) + wallOffset
wallTop1 = SKSpriteNode(texture: wallTop1Tex)
wallTop1.scale(to: CGSize(width: wallTop1Tex.size().width / 2, height: wallTop1Tex.size().height / 2))
wallTop1.position = CGPoint(x: xCoordinate, y: yCoordinate)
wallTop1.zPosition = objectZPos
addChild(wallTop1)
更新:我做了更多的测试,结果证明,至少根据节点数,即使不涉及随机性,每个 addChild 函数传递都会创建两个节点。意思是这段代码
let xCoordinate = self.frame.midX
let yCoordinate = self.frame.midY
objectTex = SKSpriteTexture(imageNamed: "object")
object = SKSpriteNode(texture: objectTex)
object.position = CGPoint(x: xCoordinate, y: yCoordinate)
self.addChild(object)
在我的 sprite kit 版本中创建了两个节点,我只能假设这是一个小故障,除非我有一些未知的设置错误??如果是这样,我很想听听它是什么,如果不是,我可以运行某种类型的去毛刺/调试来解决 SpriteKit 本身似乎存在的问题吗?
【问题讨论】:
-
欢迎加入 :) 您是否介意将导致您遇到问题的代码添加到您的问题中,这样我们可以更轻松地了解正在发生的事情。
-
@pbodsk 我已经添加了代码,如果您需要任何其他信息,请告诉我。谢谢!
标签: swift swift3 skspritenode arc4random