2014-02-09 2 views
0

У меня есть следующие настройки в моей игре:Перемещения SKNodes и SKSpriteNodes

  • An SKNode с именем _backgroundLayer
  • Повторяющиеся текстуры, которые я добавил к _backgroundLayer 9 раза, чтобы сделать больший фон
  • SKSprite с именем levelButton, который добавляется к _backgroundLayer ([_groundgroundLayer addChild: levelButton];).

Я использую levelButton.anchorPoint = CGPointMake (0,5, 0,5); для того, чтобы уровеньButton имел опорную точку в середине. Теперь, когда я делаю 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 по учебникам и кучу учебников и советов.

Пожалуйста, помогите.

Теперь мой код выглядит следующим образом:

@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, поэтому координаты были разными.

Смежные вопросы