Не могу увидеть мой SKShapeNode при создании пользовательского класса

Я работаю над проектом с довольно большим количеством узлов и обнаружил, что мне нужно создать 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

    }

}

person James Stephen Brown    schedule 10.06.2015    source источник


Ответы (1)


Вы вызываете super.init(), который является назначенным инициализатором, но нигде не определяете путь, по которому должен следовать ваш SKSpriteNode.

Это можно сделать в пользовательской инициализации, добавив:

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

для круга вы также можете заполнить его:

fillColor = NSColor.grayColor()
person The Tom    schedule 10.06.2015
comment
Это сработало! Рада, что не пробовала методом проб и ошибок. Изменен серый (ссылка на другой класс) спасибо. - person James Stephen Brown; 10.06.2015
comment
Если это отвечает на ваш вопрос, вы можете пометить его как «принятый ответ». Это все спасибо, что нужно ;-) - person The Tom; 10.06.2015