我正在尝试为SKSpriteNode创建一个物理主体。我通常使用图像创建物理体并说:
snode = SKSpriteNode(imageNamed: snodeImage)
snode = SKPhysicsBody(texture: snode.texture!, size: snode.size)
我希望能够使用以下方法创建一个物理体:
snode.physicsBody = SKPhysicsBody(polygonFromPath: CGPath)
我不知道怎么做,我试过在网上看,但我无法弄清楚。有人能告诉我一个小例子吗?也许告诉我如何使用这个构造函数创建一个简单的矩形物理体?
答案 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
来帮助您调试物理形状。