swift - 使用 `SKNode` 作为 "world container"触发 NSException

标签 swift sprite-kit xcode7

我在使用 SKNode-s 作为包含各种 Sprite 的“容器”时遇到了问题。我想以这种方式执行此操作,因为我希望能够移动整个 SKNode,而不是单独移动每个组件。如果有人能解释我做错了什么,我将不胜感激。这是一个示例,其中我删除了不会导致任何错误的所有内容,只留下了导致错误的部分。

class GameScene: SKScene {
    let jumper = SKSpriteNode(imageNamed: "doodler.png")
    let brick = SKSpriteNode(imageNamed: "brick.png")
    let worldNode = SKNode()

    override func didMoveToView(view: SKView) {
        addChild(worldNode)
        setupBricks()
    }

    func addBrick() {
        let randomX = random(min: size.width*0.1, max: size.height*0.9)
        let randomY = random(min: size.width*0.1, max: size.height*0.9)
        brick.position = CGPointMake(randomX, randomY)
        brick.name = "brick"
        brick.size = CGSizeMake(70, 10)
        brick.physicsBody = SKPhysicsBody(rectangleOfSize: brick.size)
        worldNode.addChild(brick)
    }

    func setupBricks() {
        for _ in 0...10 {addBrick()}
    }

在另一个游戏中,我遇到了一个问题,每次两个特定对象发生碰撞时,游戏就会崩溃并给我带来与现在相同的错误:

libc++abi.dylib: terminating with uncaught exception of type NSException

最佳答案

尝试创建一个砖 block 类:

class Brick: SKSpriteNode {

    init(position:CGPoint) {
        let texture = SKTexture(imageNamed: "brick.png")
        super.init(texture: texture, color: nil, size: texture.size())
        self.position = position
        self.physicsBody = SKPhysicsBody(rectangleOfSize: brick.size)
    }

在你的场景中:

func addBrick() {
    let randomX = random(min: size.width*0.1, max: size.height*0.9)
    let randomY = random(min: size.width*0.1, max: size.height*0.9)
    let position = CGPointMake(randomX, randomY)
    let brick = Brick(position)     
    worldNode.addChild(brick)
}

关于swift - 使用 `SKNode` 作为 "world container"触发 NSException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37919761/

相关文章:

arrays - 数组和元组有什么区别

ios - 在 Swift 中带有事件的 SpriteKit 按钮

ios - 在 Swift 中创建多个倒数计时器

ios - 如何枚举 Sprite Kit 场景中的所有节点?

ios - Xcode 和 iOS 9's "资源包必须位于/OnDemandResources 中”错误

ios - 模块被禁用 - 但为什么呢?

ios - 我可以使用 scenekit 和 arkit 制作可以透过透明物体看到的阴影吗?

Swift:创建框架依赖项

ios - 我怎样才能让 UIAlertAction 处理程序在 UIAlertController 被解除之前执行?

ios - 我可以为 Xcode-UI-Tests 禁用动画吗?