麻烦:使用Swift和SpriteKit的SKPhysicsBody(polygonFromPath:CGPath)

时间:2015-12-13 00:08:46

标签: swift sprite-kit skspritenode skphysicsbody cgpath

我正在尝试为SKSpriteNode创建一个物理主体。我通常使用图像创建物理体并说:

snode = SKSpriteNode(imageNamed: snodeImage)
snode = SKPhysicsBody(texture: snode.texture!, size: snode.size)

我希望能够使用以下方法创建一个物理体:

snode.physicsBody = SKPhysicsBody(polygonFromPath: CGPath)

我不知道怎么做,我试过在网上看,但我无法弄清楚。有人能告诉我一个小例子吗?也许告诉我如何使用这个构造函数创建一个简单的矩形物理体?

1 个答案:

答案 0 :(得分:2)

最简单的方法是使用UIBezierPath,因为它有许多有用的构造函数,然后将其转换为CGPath想要的polygonFromPath

你要求一些代码来创建一个简单的矩形物理体:

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来帮助您调试物理形状。