我有一个有两个孩子SKShapeNodes的SKNode。
+(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并将其视为一个物理身体?任何帮助将不胜感激!
答案 0 :(得分:1)
谢谢,sangony。我仔细检查,发现skeetnode.physicsBody是零。
所以我从SKSpriteNode继承了SKSkeetNode并以这种方式创建了一个实例:
SkeetNode *skeetnode = [SkeetNode spriteNodeWithTexture:nil size:CGSizeMake(size, size)];
现在它完美无缺。