Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 有没有办法设置SKSpriteNode和它的physicsBody之间的偏移量?_Swift_Sprite Kit_Physics_Skphysicsbody - Fatal编程技术网

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

Swift 有没有办法设置SKSpriteNode和它的physicsBody之间的偏移量?,swift,sprite-kit,physics,skphysicsbody,Swift,Sprite Kit,Physics,Skphysicsbody,我正在创建一个游戏,其中用户控制一个50x50px的立方体,可以收集更多的立方体,同时探索和收集的立方体添加到用户当前立方体的随机一侧 用户启动多维数据集 在用户收集了更多的多维数据集之后 正如您已经从第二张图像中看到的,我的问题是当我从纹理生成身体时,它与原始图片有一些偏移。立方体添加是随机的,所以你可以得到非常奇怪的形状,这些偏移总是不同的。我的问题是,有没有一种方法可以使身体与父精灵对齐?另外,我不想移动雪碧,因为雪碧在正确的位置,我实际上想移动身体 这就是我的代码的样子。播放器和多维数据

我正在创建一个游戏,其中用户控制一个50x50px的立方体,可以收集更多的立方体,同时探索和收集的立方体添加到用户当前立方体的随机一侧

用户启动多维数据集

在用户收集了更多的多维数据集之后

正如您已经从第二张图像中看到的,我的问题是当我从纹理生成身体时,它与原始图片有一些偏移。立方体添加是随机的,所以你可以得到非常奇怪的形状,这些偏移总是不同的。我的问题是,有没有一种方法可以使身体与父精灵对齐?另外,我不想移动雪碧,因为雪碧在正确的位置,我实际上想移动身体

这就是我的代码的样子。播放器和多维数据集在各自的坐标系中都位于CGPointZero

玩家:SKNode

-立方体:SKSpriteNode

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

不要从纹理创建SKPhysicsBody,而是为每个单独的立方体创建一个SKPhysicsBody,然后将所有这些单独的实体放入一个数组中,然后使用以下方法从该数组中的实体创建SKPhysicsBody:

SKPhysicsBody*BodywithBodys:NSArray*Bodys 这会让你有一个更准确的身体


传入此方法的物理实体的形状用于创建一个新的物理实体,其覆盖区域是SKPhysicsBody类引用中其子对象区域的并集。

尝试将锚点设置为0.5,0.5