【问题标题】:Swift Sprite-kit SKPhyshicsBodySwift Sprite-kit SKPhyshicsBody
【发布时间】:2016-09-01 18:15:20
【问题描述】:

我现在正在使用一些图像可以检测它们何时被触摸

plane.physicsBody = SKPhysicsBody(circleOfRadius: plane.frame.height / 2)

但我需要它,所以它是图像的边界,而不是圆形或矩形。

【问题讨论】:

  • 你想要它是什么?
  • 我希望它固定分配给它的图像的大小,它是一个复杂的 2d 对象,圆形和矩形不适合其确切大小。所以我需要使物理体适合图像@Knight0fDragon 的确切大小
  • 然后使用SKPhysicsBody(texture:),如果你的精灵由多个节点组成,通过view.textureFromNode创建一个纹理
  • @Knight0fDragon 将其作为正式答案。只要他的图片使用清晰的像素,这绝对是正确的答案
  • 不,这个问题应该被删除

标签: swift sprite-kit skspritenode skphysicsbody


【解决方案1】:

我们有一架飞机,而你想要一个实体。 您的第一种方法是 circleOfRadius (物理表示是具有给定半径的圆)。您可以使用其他形状,例如 矩形

plane.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(100, height: 100))  

如 cmets 中所述,您还可以使用精灵的形状(纹理)来创建物理体的形状:

plane.physicsBody = SKPhysicsBody(texure: plane.texture!, size: plane.size)

但是选择它的一个好方法是:如果您希望您的游戏在许多不同的设备上顺利运行,请不要确保物理计算变得过于复杂。换句话说,如果你的平面周围有很多物体,它们的物理行为会四处移动并相互碰撞,你可以选择使用简化的形状来更有效地处理物理,特别是如果一个形状已经看起来很像一个矩形或一个圈子。

【讨论】:

  • ok 所以我之前用那行代码来处理纹理,但是如果它碰到任何我的纹理开始旋转的东西,有没有办法在碰撞时将平面设置为静止,这样它就不会旋转它只是在启动时保持相同的方式? @Alessandro Ornano
  • 您可以启用 skView.showPhysics = true 来查看这些尺寸是否正确关于physicsBodies..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多