如何将两个 SKSpriteNode 组合在一起,以便我可以像它们是一个一样进行 z 旋转?假设一个 SKSpriteNode 是一根绳子,另一个是一个附在绳子末端的球。我怎样才能让它看起来像他们一起摆动?执行此操作的 SKAction 是什么?
问问题
847 次
2 回答
4
两种选择:
将它们都放在一个 SKNode 中并旋转 SKNode(围绕某个锚点)
SKNode *container = [[SKNode alloc] init]; [container addChild:ballSprite]; [container addChild:ropeSprite]; container.zRotation = someValue;
或者单独旋转它们,然后它们移动它们,这样看起来就好像它们一起旋转了。
于 2013-10-28T17:50:25.893 回答
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 的建议进行旋转
于 2013-10-29T00:55:34.577 回答