swift - 设计圆以外的物理体

标签 swift sprite-kit skphysicsbody

我正在使用 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)

enter image description here

自动创建 PhysicsBody 形状

现在我只需添加这一行

croc.physicsBody = SKPhysicsBody(texture: croc.texture!, size: croc.texture!.size())

SpriteKit 会自动为我创建 PhysicsBody。

enter image description here

你能看到 Sprite 周围的线条吗?而已。让我把 Sprite 隐藏起来,这样你就能看得更清楚

croc.hidden = true 

enter image description here

关于swift - 设计圆以外的物理体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937242/

相关文章:

ios - writeToFile 不适用于保存照片

swift - 在 sprite kit 中创建高效的平铺背景

ios - applyImpulse 在接触节点时不起作用

ios - SpriteKit : detect complete node overlap

协议(protocol)类型 'XXX' 的 Swift 值不能符合 'Identifiable' ;只有结构/枚举/类类型可以符合协议(protocol)

ios - Realm.io 和复合主键

ios - SpriteKit - SKSpriteNode 在 3.5 英寸和 4 英寸设备上的缩放方式不同

Swift 3 Physicsbody 碰撞不起作用

ios - 如何创建自定义按钮并在 iOS 中以最佳方式多次使用?

swift - 如何让物体移动得更远?