我正在使用 SpriteKit 制作我的第一款游戏,并且我一直在使用敌人外星人(SKSpriteNode 子类)物理体:
self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width/2)
目前大多数外星人都是圆形的,这很有效。但是,如果我有椭圆形或方形外星人,设计他们的物理 body 的最佳方法是什么?我试过这个方形:
let squarePath = UIBezierPath(rect: CGRect(x: -64, y: -64, width: 128, height: 128))
self.physicsBody = SKPhysicsBody(polygonFromPath: squarePath.CGPath)
但我不知道这是否是最有效的,也不知道如何精确地制作椭圆。任何建议都会很棒!
最佳答案
让 SpriteKit 为您绘制形状!
如果您有一个 Sprite 并且需要为其创建一个PhysicsBody
,只需让 SpriteKit 为您完成即可。 SpriteKit 可以分析纹理、找到边界(使用 alpha/透明 channel )并最终创建与图像匹配的物理体。
假设我将这个 Sprite 添加到我的场景中
let croc = SKSpriteNode(imageNamed: "croc_walk01")
croc.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(croc)
自动创建 PhysicsBody 形状
现在我只需添加这一行
croc.physicsBody = SKPhysicsBody(texture: croc.texture!, size: croc.texture!.size())
SpriteKit 会自动为我创建 PhysicsBody。
你能看到 Sprite 周围的线条吗?而已。让我把 Sprite 隐藏起来,这样你就能看得更清楚
croc.hidden = true
关于swift - 设计圆以外的物理体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937242/