2016-07-12 3 views
1

Учебники онлайн ссылаются на создание кругов и других фигур с помощью редактора сцен SpriteKit. Одним из таких примеров является: https://www.raywenderlich.com/118225/introduction-sprite-kit-scene-editor.Нарисуйте круги и другие фигуры с помощью редактора сцен SpriteKit?

Однако единственный тип узла формы, доступный в библиотеке объектов, представляет собой квадратную форму.

Как вы используете библиотеку объектов для создания других фигур, кроме квадратов?

ответ

0

SKShapeNode объект рисует форму, образованную путем Core Graphics.

Графический путь представляет собой набор прямых линий и кривых, которые могут определять открытые или закрытые подпуты. Вы можете указать отдельное поведение рендеринга для заполненной и поглаженной части пути. Каждая часть может быть визуализирована с использованием сплошного цвета или текстуры; если вам нужно сделать более сложные эффекты, вы также можете использовать пользовательский шейдер .

Узлы формы полезны для контента, который не может быть легко разложен в простые текстурированные спрайты. Узлы формы также очень полезны для построения и отображения отладочной информации в верхней части вашей игры. . Однако класс SKSpriteNode предлагает более высокую производительность , чем этот класс, поэтому экономно использовать узлы формы.

Создание узла формы из пути показывает пример создания узла формы . В примере создается круг с синим внутренним пространством и белым контуром . Путь создается и прикрепляется к свойству пути элемента формы.

Вы можете найти более подробную информацию в компании Apple чиновника guide

Это фактические доступные Инициализационные методы из источников:

/* Create a Shape Node using a CGPathRef, optionally centered at the Node's origin. */ 
    @available(iOS 8.0, *) 
    public convenience init(path: CGPath) 
    @available(iOS 8.0, *) 
    public convenience init(path: CGPath, centered: Bool) 

    /* Create a Shape Node representing a Rect. */ 
    @available(iOS 8.0, *) 
    public convenience init(rect: CGRect) 

    /* Create a Shape Node representing a rect centered at the Node's origin. */ 
    @available(iOS 8.0, *) 
    public convenience init(rectOfSize size: CGSize) 

    /* Create a Shape Node representing a rounded rect with a corner radius */ 
    @available(iOS 8.0, *) 
    public convenience init(rect: CGRect, cornerRadius: CGFloat) 

    /* Create a Shape Node representing a rounded rect with a corner radius centered at the Node's origin. */ 
    @available(iOS 8.0, *) 
    public convenience init(rectOfSize size: CGSize, cornerRadius: CGFloat) 

    /* Create a Shape Node representing an circle centered at the Node's origin. */ 
    @available(iOS 8.0, *) 
    public convenience init(circleOfRadius radius: CGFloat) 

    /* Create a Shape Node representing an Ellipse inscribed within a Rect */ 
    @available(iOS 8.0, *) 
    public convenience init(ellipseInRect rect: CGRect) 

    /* Create a Shape Node representing an Ellipse inscribed within a Rect centered at the Node's origin. */ 
    @available(iOS 8.0, *) 
    public convenience init(ellipseOfSize size: CGSize) 

    /* Create a Shape Node representing an a series of Points interpreted as line segments */ 
    @available(iOS 8.0, *) 
    public convenience init(points: UnsafeMutablePointer<CGPoint>, count numPoints: Int) 

    /* Create a Shape Node representing a smoothed spline that passes through a series of Points */ 
    @available(iOS 8.0, *) 
    public convenience init(splinePoints points: UnsafeMutablePointer<CGPoint>, count numPoints: Int) 

Как вы можете видеть, вы можете создавать неполноэкранные только квадраты, но и нерегулярный многоугольник, используя, например, обычай CGPath.

Типичный пример этого ниже:

let shape = SKShapeNode() 
shape.path = UIBezierPath(roundedRect: CGRect(x: -128, y: -128, width: 256, height: 256), cornerRadius: 64).CGPath 
shape.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame)) 
shape.fillColor = UIColor.redColor() 
shape.strokeColor = UIColor.blueColor() 
shape.lineWidth = 10 
addChild(shape) 

P.S.: В процессе разработки могут возникнуть некоторые ошибки в памяти, вызванные SKShapeNode, но ничего, что помешало бы вам протестировать, создать и опубликовать игру, многие игры на рынке используют без проблем SKShapeNode, вы должны просто быть более осторожными в кода, не злоупотребляя им.

0

На данный момент квадрат - это ваш единственный вариант. Возможно, в следующей версии они позволят больше фигур, но по состоянию на данный момент я бы избегал использовать SKShapeNode, потому что они чрезвычайно багги.

Источник: редактор сцены XCode, только опция квадратная, ни одна из вкладок не позволяет это изменить или подклассы

+0

Где источник? Ссылка? –

+0

Какой источник?Откройте редактор сценариев xcode spritekit и посмотрите себя – Knight0fDragon

+0

Я неправильно понял. Я думал, когда вы сказали «Источник:», вы цитировали кого-то. Вы говорили, что источник - это редактор сцены, и вы правы –

Смежные вопросы