创建自定义时看不到我的 SKShapeNode class

Can't see my SKShapeNode when creating a custom class

我一直在处理一个有很多节点的项目,我发现我必须创建一个 SKNode,并在其中添加一个 SKShapeNode 作为 child。但我觉得我应该能够初始化 SKShapeNode 的自定义 class。

当我这样做(下面的代码)时,当我将 class 作为 child 添加到我的 GameScene 时,它​​在那里注册(物理体在那里)但是我看不到形状。

import Foundation
import SpriteKit

class WallNeut: SKShapeNode {

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    init(radius: CGFloat) {

        super.init()

        zPosition = 10
        lineWidth = 5
        strokeColor = SKColor.grayColor()

        physicsBody = SKPhysicsBody(circleOfRadius: radius)
        physicsBody?.affectedByGravity = false
        physicsBody?.allowsRotation = false
        physicsBody?.pinned = true

    }

}

您正在调用 super.init() 这是指定的初始化程序,但没有定义您希望 SKSpriteNode 遵循的路径。

这可以在您的自定义 init 中通过添加来完成:

path = CGPathCreateWithEllipseInRect(CGRect(origin: CGPointZero, size: CGSize(width: radius * 2, height: radius * 2)), nil)

对于圆圈,您可能还想用 :

填充它
fillColor = NSColor.grayColor()