2013-10-28 2 views

답변

4

두 가지 옵션 :

  1. 가 (특정 고정 점 주위)에 SKNode을 SKNode에 둘 다 넣고 회전

    SKNode *container = [[SKNode alloc] init]; 
    [container addChild:ballSprite]; 
    [container addChild:ropeSprite]; 
    container.zRotation = someValue; 
    
  2. 또는 개별적으로 회전하고 그것을 있도록로 이동 마치 함께 회전 한 것처럼 보입니다.

+0

당신의 예를 게시 할 수 제안 어떻게 둥지 하나 SKNode에 두 SKSpriteNodes을에? – blueicecream

+0

답변이 업데이트되었습니다. 볼과 로프의 위치를 ​​업데이트해야합니다. 컨테이너 노드의 좌표 공간에서이를 정의해야하기 때문입니다. – DrummerB

+0

앵커 포인트는 어떻게 수정합니까? – Gujamin

0

아마 가장 우아한 해결책은 아니지만 여기에 SKNode (컨테이너)에 SKSpriteNodes를 추가 한 방법이 있습니다. 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으로 회전