有没有办法在SKSpriteNode和它的physicsBody之间设置偏移量?

时间:2015-02-27 10:51:50

标签: swift sprite-kit physics skphysicsbody

我正在创建一个用户控制多维数据集(50x50px)的游戏,并且可以在探索和收集添加到用户当前多维数据集随机区域的多维数据集时收集更多多维数据集。

用户启动多维数据集

http://s7.postimg.org/id95wms7r/cube.png

用户收集了更多立方体后

http://s13.postimg.org/oo9v4c9bb/morecubes.png

正如您已经从第二张图片中看到的那样,我的问题是当我从纹理生成主体时,它与原始图片有一些偏移。立方体添加是随机的,因此您可以获得非常奇怪的形状,并且这些偏移总是不同的。我的问题是,有没有办法将该主体与父精灵对齐?另外我不想移动精灵,因为精灵位于正确的位置,我实际上想要移动身体。

这就是我的代码的样子。玩家和立方体都在CGPointZero的自己的坐标系中。

玩家:SKNode

- 立方体:SKSpriteNode

physicsBody = SKPhysicsBody(texture: cubes.texture, size: accumulatedSize)
physicsBody?.dynamic = true
physicsBody?.mass = 2.0
physicsBody?.allowsRotation = false

1 个答案:

答案 0 :(得分:0)

不是从纹理创建SKPhysicsBody,而是为每个单独的多维数据集创建一个SKPhysicsBody,然后将所有这些单独的主体放入一个数组中,然后使用以下命令从该数组中的主体创建SKPhysicsBody:

  • (SKPhysicsBody *)bodyWithBodies:(NSArray *)body

这将使精灵更精确的身体。

"传递给这种方法的物理体的形状用于创建一个新的物理体,其覆盖区域是其子区域的联合体。 (来自SKPhysicsBody Class Reference)。