我的游戏中有一个角色,它是一个SKSpriteNode,其子孙SKSpriteNodes很少,所以我可以动画我的角色的各个部分(手,脚等),它还有1个SKSpriteNode(尝试替换SKNode,但它是与身体的SKPhysicsBody相同)。
当我在场景中将角色添加到我的图层时,它只会挂在该位置,并且身体的精灵会掉下来。
我的问题和问题是:如何将所有儿童精灵保存在我的主角精灵中?我如何将角色保持在一起?
感谢您的任何想法!
编辑:如何保持子精灵与身体附加到我的容器精灵?
答案 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并将其添加到父节点。