SpriteKit/Objective-C:将SKPhysicsBody应用于父节点,以便将子节点视为一个节点

SpriteKit/Objective-C:将SKPhysicsBody应用于父节点,以便将子节点视为一个节点,objective-c,sprite-kit,Objective C,Sprite Kit,我有一个SKNode,它有两个子skshapenode +(instancetype)skeetWithRandomColorsAtPosition:(CGPoint)position WithSize:(CGFloat)size { InnerSkeetNode *inner = [InnerSkeetNode innerSkeetWithHue:PurpleHue AtPosition:position WithSize:size]; OuterSkeetNode *outer = [Ou

我有一个SKNode,它有两个子skshapenode

+(instancetype)skeetWithRandomColorsAtPosition:(CGPoint)position WithSize:(CGFloat)size {

InnerSkeetNode *inner = [InnerSkeetNode innerSkeetWithHue:PurpleHue AtPosition:position WithSize:size];
OuterSkeetNode *outer = [OuterSkeetNode outerSkeetWithHue:BlueHue AtPosition:position WithSize:size];

SkeetNode *skeetnode = [SkeetNode node];
[skeetnode addChild:outer];
[skeetnode addChild:inner];

[skeetnode setUpPhysicsBody];

return skeetnode;
}
…因此,基本上父节点由两个形状组成——内部和外部——具有不同的颜色

现在我想将物理体应用于skeetnode:

-(void)setUpPhysicsBody {
self.physicsBody = [SKPhysicsBody    
bodyWithRectangleOfSize:self.frame.size];
self.physicsBody.affectedByGravity = YES;
}
…但问题是它仍然不受游戏物理世界的影响

但是,如果我分别在两个子节点上设置物理实体,则这两个子节点将受到影响。问题是,它们就像两个物体一样。出于冲突的目的,我希望将它们视为单个节点——从而将它们添加到父节点

有一个固定的SKPhysicsJointFixed。但是,在尝试之后(根据文档),我只能将关节添加到场景,而不能添加到离散节点


是否可以将子节点添加到SKNode并将其视为一个物理实体?任何帮助都将不胜感激

谢谢,桑戈妮。我仔细检查后发现skeetnode.physicsBody为零

因此,我从SKSpritode继承了SKSkeetNode,并通过以下方式创建了一个实例:

SkeetNode *skeetnode = [SkeetNode spriteNodeWithTexture:nil size:CGSizeMake(size, size)];

现在它工作得很好。

这是因为在创建物理体时使用了self,而这种情况下self是一个自身没有形状的节点。尝试使用SKShapeNode并向其中添加一个子项。