2014-02-09 52 views
0

我在遊戲中的以下設置:移動SKNodes和SKSpriteNodes

  • 的SKNode名爲_backgroundLayer
  • 我已經加入到_backgroundLayer 9次,重複的紋理做更大的背景
  • 名爲levelButton的SKSprite,添加到_backgroundLayer([_backgroundLayer addChild:levelButton];)。

我使用levelButton.anchorPoint = CGPointMake(0.5,0.5);使levelButton在中間有一個錨點。 現在,當我使levelButton.position = CGPointMake(0,0);和_backgroundLayer.position = CGPointMake(0,0); levelButton的中間正確位於(0,0)中,其中間位於屏幕的左下角。這很好。但是,如果我將levelButton移動到levelButton.position = CGPointMake(100,0);和_backgroundLayer.position = CGPointMake(-100,0);如下所示,levelButton應該仍然在(0,0)中間,也就是屏幕的左下角。然而,情況並非如此,levelButton更靠右,就像右邊50像素。但它不應該,因爲我將_backgroundLayer 100移動到左側(-100)和_levelButton 100向右(100)。它應該留在原地。

這些是基本的東西,我不明白他們爲什麼不工作,因爲他們應該。我可能做錯了什麼,但即使我已經閱讀了iOS Games by Tutorials以及一些教程和技巧,但我找不到它。

請幫忙。

現在,我的代碼如下:

@implementation LevelSelectScene 
{ 
    SKNode *_backgroundLayer; 
} 

-(id)initWithSize:(CGSize)size { 

    /* Setup your scene here */ 
    _backgroundLayer = [SKNode node]; 
    _backgroundLayer.name = @"backgroundLayer"; 

    SKTexture *backgroundTexture = [SKTexture textureWithImageNamed:@"levelSelect"]; 

    int textureID = 0; 

    for (int i = 0; i<3; i++) { 
     for (int j = 0; j<3; j++) { 

      SKSpriteNode *background = [SKSpriteNode spriteNodeWithTexture:backgroundTexture]; 

      background.anchorPoint = CGPointZero; 
      background.position = CGPointMake((background.size.width)*i, 
               (background.size.height)*j); 
      background.zPosition = 0; 
      background.name = [NSString stringWithFormat:@"background%d", textureID]; 

      textureID++; 

      [_backgroundLayer addChild:background]; 
     } 
    } 

    [self addChild:_backgroundLayer]; 

    SKSpriteNode * levelButton = [SKSpriteNode spriteNodeWithImageNamed:@"lock"]; 
    levelButton.anchorPoint = CGPointMake(0.5, 0.5); 
    levelButton.position = CGPointMake(100, 0);     //IMPORTANT 
    levelButton.zPosition = 150; 
    levelButton.name = @"test"; 

    [_backgroundLayer addChild:levelButton]; 

    _backgroundLayer.position = CGPointMake(-100, 0);  //IMPORTANT 
} 
return self; 
} 

回答

0

找到了! 我正在改變_backgroundLayer SKnode的比例,所以座標不同。