我有一个简单的精灵套件游戏,我在父节点上运行一个动作(移动一步):
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
的孩子。