设计圆以外的物理体
Designing physics bodies other than circles
我正在用 SpriteKit 制作我的第一个游戏,我一直在使用的敌人外星人(SKSpriteNode 子类)物理体:
self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width/2)
到目前为止,大多数外星人都是 circle-shaped。但是,如果我有椭圆形或方形外星人,设计他们的物理身体的最佳方法是什么?我试过这个方形:
let squarePath = UIBezierPath(rect: CGRect(x: -64, y: -64, width: 128, height: 128))
self.physicsBody = SKPhysicsBody(polygonFromPath: squarePath.CGPath)
但我不知道这是否是最有效的,也不知道如何精确地制作省略号。任何建议都会很棒!
使用路径是创建复杂物理体的唯一方法,但是,您可以使用 SKPhysicsBody(rectangleOf: CGSize(width: 100, height: 100)) 创建矩形
编辑:
使用它来帮助从图像创建有效路径:http://insyncapp.net/SKPhysicsBodyPathGenerator.html
注意:这只会生成图像的路径,您需要通过删除路径和连接点来自行清理它。
让 SpriteKit 为您绘制形状!
如果您有精灵并且需要为其创建一个 PhysicsBody
,只需让 SpriteKit 为您完成即可。 SpriteKit 可以分析纹理、找到边界(使用 alpha/transparent 通道)并最终创建与图像匹配的物理体。
假设我将这个精灵添加到我的场景中
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。
你能看到精灵周围的线条吗?而已。让我把精灵隐藏起来,这样你能看得更清楚
croc.hidden = true
我正在用 SpriteKit 制作我的第一个游戏,我一直在使用的敌人外星人(SKSpriteNode 子类)物理体:
self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width/2)
到目前为止,大多数外星人都是 circle-shaped。但是,如果我有椭圆形或方形外星人,设计他们的物理身体的最佳方法是什么?我试过这个方形:
let squarePath = UIBezierPath(rect: CGRect(x: -64, y: -64, width: 128, height: 128))
self.physicsBody = SKPhysicsBody(polygonFromPath: squarePath.CGPath)
但我不知道这是否是最有效的,也不知道如何精确地制作省略号。任何建议都会很棒!
使用路径是创建复杂物理体的唯一方法,但是,您可以使用 SKPhysicsBody(rectangleOf: CGSize(width: 100, height: 100)) 创建矩形
编辑: 使用它来帮助从图像创建有效路径:http://insyncapp.net/SKPhysicsBodyPathGenerator.html
注意:这只会生成图像的路径,您需要通过删除路径和连接点来自行清理它。
让 SpriteKit 为您绘制形状!
如果您有精灵并且需要为其创建一个 PhysicsBody
,只需让 SpriteKit 为您完成即可。 SpriteKit 可以分析纹理、找到边界(使用 alpha/transparent 通道)并最终创建与图像匹配的物理体。
假设我将这个精灵添加到我的场景中
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。
你能看到精灵周围的线条吗?而已。让我把精灵隐藏起来,这样你能看得更清楚
croc.hidden = true