我一直在研究一个有很多节点的项目,我发现我必须创建一个SKNode,并将SKShapeNode添加为子节点。但我觉得我应该能够初始化自定义的SKShapeNode类。
当我这样做时(下面的代码),当我将这个类作为一个孩子添加到我的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
}
}
答案 0 :(得分:3)
您正在调用super.init()
这是指定的初始化程序,但无法定义您希望SKSpriteNode遵循的路径。
这可以通过添加以下内容在您的自定义初始化中完成:
path = CGPathCreateWithEllipseInRect(CGRect(origin: CGPointZero, size: CGSize(width: radius * 2, height: radius * 2)), nil)
对于圆圈,您可能还想填写:
fillColor = NSColor.grayColor()