如何将两个SKSpriteNode组合在一起,以便我可以像对待它们一样对它们进行z旋转?假设一个SKSpriteNode是一根绳子,另一个是连接在绳子末端的球。我怎么能让它看起来像是在一起摆动? SKAction会做什么?
答案 0 :(得分:4)
两个选项:
将它们放在SKNode中并旋转SKNode(围绕某个锚点)
SKNode *container = [[SKNode alloc] init];
[container addChild:ballSprite];
[container addChild:ropeSprite];
container.zRotation = someValue;
或者单独旋转它们并将它们移动,使它看起来好像是一起旋转的。
答案 1 :(得分:0)
可能不是最优雅的解决方案,但这里是我如何将SKSpriteNodes添加到SKNode(容器)。 containerArray包含应添加的节点。 newSpriteName(NSString)用于决定精灵是否显示正面或背面。
// Add a container
_containerNode = [SKNode node];
_containerNode.position = _theParentNodePosition;
_containerNode.name = @"containerNode";
[_background addChild:_containerNode];
for (SKNode *aNode in containerArray) {
if (![aNode.name isEqualToString:@"background"] && ![aNode.name isEqualToString:@"title1"] && ![aNode.name isEqualToString:@"title2"]) {
// Check if "back" sprite should be added or the front face
if ([[aNode.name substringFromIndex:[aNode.name length] - 1] isEqualToString:@"b"]) {
newSpriteName = @"back";
} else {
newSpriteName = aNode.name;
}
// Prepare the new node
SKSpriteNode *newNode = [SKSpriteNode spriteNodeWithImageNamed:newSpriteName];
newNode.name = aNode.name;
newNode.zPosition = aNode.zPosition;
newNode.position = CGPointMake(aNode.position.x - _theParentNodePosition.x, aNode.position.y - _theParentNodePosition.y);
// Delete the old node
SKNode *deleteNode = [_background childNodeWithName:aNode.name];
[deleteNode removeFromParent];
// Add the new node
[_containerNode addChild:newNode];
}
}
然后像DrummerB建议的那样进行轮换