我是一个简单的sprite-kit游戏,我在父节点上运行一个动作(移动一步):
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会导致应用程序崩溃!!
有人可以告诉我我的代码有什么问题吗?
谢谢,
答案 0 :(得分:0)
在Xcode控制台中阅读错误消息。它会说“试图用现有父节点添加节点”。
将其分解为相关代码,您正在执行此操作,这是非法的:
[self addChild:firstNode];
[self addChild:secondNode];
[parentNode addChild:firstNode];
[parentNode addChild:secondNode];
节点不能是两个父母的孩子。您必须决定他们是否应该是self
或parentNode
的孩子。