向父节点添加两个精灵节点会导致应用程序崩溃



我有一个简单的精灵套件游戏,我在父节点上运行一个动作(移动一步):

SKSpriteNode *firstNode = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(100, 100)];
firstNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:firstNode.size];
firstNode.physicsBody.dynamic = YES;
firstNode.position = CGPointMake(100, 100);
[self addChild:firstNode];
SKSpriteNode *secondNode = [SKSpriteNode spriteNodeWithColor:[SKColor blackColor] size:CGSizeMake(100, 100)];
secondNode.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:secondBlock.size];
secondNode.physicsBody.dynamic = YES;
secondNode.position = CGPointMake(200, 200);
[self addChild:secondNode];
SKSpriteNode *parentNode = [SKSpriteNode node];
[parentNode addChild:firstNode];
[parentNode addChild:secondNode];
SKAction *moveOneStep = [SKAction moveBy:CGVectorMake(100,  0) duration:.1];
[parentNode runAction:moveOneStep];

但是将firstNode作为子节点添加到parentNode会导致应用程序崩溃!!

谁能告诉我我的代码有什么问题?

谢谢,

读取Xcode控制台中的错误信息。它会显示类似"尝试添加具有现有父节点的节点"之类的信息。

把它分解成相关的代码,你正在这样做,这是非法的:

[self addChild:firstNode];
[self addChild:secondNode];
[parentNode addChild:firstNode];
[parentNode addChild:secondNode];

一个节点不能是两个父节点的子节点。你必须决定它们应该是self还是parentNode的孩子。

最新更新