SpriteKit:SKSpriteNode包含另一个SKSpriteNodes,但只包含一个SKPhysicsBody

时间:2013-10-18 12:01:09

标签: ios physics sprite-kit

我的游戏中有一个角色,它是一个SKSpriteNode,其子孙SKSpriteNodes很少,所以我可以动画我的角色的各个部分(手,脚等),它还有1个SKSpriteNode(尝试替换SKNode,但它是与身体的SKPhysicsBody相同)。

当我在场景中将角色添加到我的图层时,它只会挂在该位置,并且身体的精灵会掉下来。

我的问题和问题是:如何将所有儿童精灵保存在我的主角精灵中?我如何将角色保持在一起?

感谢您的任何想法!

编辑:如何保持子精灵与身体附加到我的容器精灵?

4 个答案:

答案 0 :(得分:4)

重新编辑:

使用SKNode控制角色的所有身体部位,包括主体:

SKNode (controller)
  SKSpriteNode (head)
  SKSpriteNode (body)
  SKSpriteNode (leg1)
  SKSpriteNode (leg2)

这为您提供了更大的灵活性。

让头脑成为"主人"这个位置,这应该可以解决问题:

-(void) didSimulatePhysics
{
    self.parent.position = [self convertPoint:self.position toNode:self.parent.parent];
    self.position = CGPointZero;
}

答案 1 :(得分:0)

正如预期的那样,身体正在下降,因为它会对重力作出反应。其他身体部位,如果他们没有物理身体,将留在你放置它们的地方。

一些选项:

1

如果你想要所有身体部位都是物理身体,那么我建议你看一个关节,即一个关节 - 例如,它会像肩关节一样工作。

这是一个example针接头,用于制造带轮子的汽车。

2

如果你只是想让它不动,无论出于何种原因。在物理机构上,只需设置它。

bodyNode.physicsBody.dynamic = NO;

答案 2 :(得分:0)

如果我理解你的话,你可以先说明SKScene的引力是0,做

    self.physicsWorld.gravity = CGVectorMake(0,0);

这将确保不会导致屏幕角色从屏幕上强制执行的重力下降到底部。

答案 3 :(得分:-1)

可能的解决方案:从子节点中删除SKPhysicBody并将其添加到父节点。