我在遊戲中的以下設置:移動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;
}