问题:SKPhysicsBody(polygonFromPath: CGPath) 使用 Swift 和 SpriteKit
Trouble with: SKPhysicsBody(polygonFromPath: CGPath) using Swift and SpriteKit
我正在尝试为 SKSpriteNode 创建一个物理体。我通常使用图像创建物理体并说:
snode = SKSpriteNode(imageNamed: snodeImage)
snode = SKPhysicsBody(texture: snode.texture!, size: snode.size)
我希望能够使用以下方法创建物理体:
snode.physicsBody = SKPhysicsBody(polygonFromPath: CGPath)
我不知道该怎么做,我试过在线查找但我无法弄清楚。有人可以给我看一个小例子吗?也许告诉我你将如何使用这个构造函数创建一个简单的矩形物理体?
最简单的方法是使用 UIBezierPath
,因为它有许多有用的构造函数,然后将其转换为 polygonFromPath
想要的 CGPath
。
您要求一些代码来创建一个简单的矩形物理体:
let square = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 128, height: 128))
square.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
let path = UIBezierPath(rect: CGRect(x: -64, y: -64, width: 128, height: 128))
square.physicsBody = SKPhysicsBody(polygonFromPath: path.CGPath)
addChild(square)
请注意,物理体是偏移的,因为它是从其节点的中心开始测量的。您可能希望在 GameViewController.swift 文件中使用 skView.showsPhysics = true
来帮助您调试物理形状。
我正在尝试为 SKSpriteNode 创建一个物理体。我通常使用图像创建物理体并说:
snode = SKSpriteNode(imageNamed: snodeImage)
snode = SKPhysicsBody(texture: snode.texture!, size: snode.size)
我希望能够使用以下方法创建物理体:
snode.physicsBody = SKPhysicsBody(polygonFromPath: CGPath)
我不知道该怎么做,我试过在线查找但我无法弄清楚。有人可以给我看一个小例子吗?也许告诉我你将如何使用这个构造函数创建一个简单的矩形物理体?
最简单的方法是使用 UIBezierPath
,因为它有许多有用的构造函数,然后将其转换为 polygonFromPath
想要的 CGPath
。
您要求一些代码来创建一个简单的矩形物理体:
let square = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 128, height: 128))
square.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
let path = UIBezierPath(rect: CGRect(x: -64, y: -64, width: 128, height: 128))
square.physicsBody = SKPhysicsBody(polygonFromPath: path.CGPath)
addChild(square)
请注意,物理体是偏移的,因为它是从其节点的中心开始测量的。您可能希望在 GameViewController.swift 文件中使用 skView.showsPhysics = true
来帮助您调试物理形状。