在线教程提到使用SpriteKit场景编辑器创建圆形和其他形状。其中一个例子就是:https://www.raywenderlich.com/118225/introduction-sprite-kit-scene-editor。
但是,对象库中唯一可用的形状节点类型是方形。
如何使用对象库创建除正方形之外的其他形状?
答案 0 :(得分:0)
SKShapeNode 对象绘制由Core Graphics路径定义的形状。
图形路径是直线和曲线的集合 可以定义打开或关闭的子路径。您可以指定单独的 路径的填充和描边部分的渲染行为。 每个部分都可以使用纯色或纹理渲染;如果 你需要渲染更复杂的效果,你也可以使用 自定义着色器。
Shape节点对于无法轻松分解的内容非常有用 成为简单的纹理精灵。形状节点也非常有用 在游戏之上构建和显示调试信息 内容。但是,SKSpriteNode类提供更高的性能 比这个类,所以请谨慎使用形状节点。
从路径创建形状节点显示了如何创建形状的示例 形状节点。该示例创建一个带有蓝色内部和a的圆 白色轮廓。创建路径并将其附加到形状节点 路径属性。
您可以向Apple官方guide
找到更多详细信息这是源中实际可用的init方法:
/* 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
,您必须简单在不滥用代码的情况下更加小心。
答案 1 :(得分:0)
截至目前,square是您唯一的选择。也许在下一个版本中它们会允许更多的形状,但是现在,我会避免使用SKShapeNode,因为它们非常错误
来源:XCode场景编辑器,只有选项是正方形,没有一个选项卡允许更改或被子类化