1

我的游戏中有一个角色,它是一个带有几个子 SKSpriteNode 的 SKSpriteNode,因此我可以为角色的各个部分(手、脚等)设置动画,它还有 1 个 SKSpriteNode(尝试用 SKNode 替换,但它是一样的) SKPhysicsBody 为身体。

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

我的问题和问题是:我怎样才能让我的主要角色精灵中的所有子精灵 - 我怎样才能让我的角色保持在一起?

感谢您的任何想法!

编辑:我怎样才能让孩子精灵的身体附着在我的容器精灵上?

4

4 回答 4

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;
}
于 2013-10-18T13:09:24.513 回答
0

正如预期的那样,身体正在下落,因为它对重力做出反应。另一个身体部分,如果他们没有物理身体,将留在你放置它们的地方。

一些选项:

1.

如果您希望所有身体部位都是物理身体,那么我建议查看关节,即销关节 - 例如,它将像肩关节一样工作。

这是用于制造带轮子汽车的销接头示例。

2.

如果你只是想让它不动,不管出于什么原因。在你的物理身体上,设置这个。

bodyNode.physicsBody.dynamic = NO;
于 2013-10-18T12:50:19.100 回答
0

如果我的理解正确,您可以先说 SKScene 上的重力为 0,方法是

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

这将确保没有任何东西会导致您的屏幕角色从屏幕上的重力下落到底部。

于 2013-10-18T12:59:52.447 回答
-1

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

于 2013-10-18T12:39:56.100 回答