游戲界面.gif
游戲框架的搭建
1.游戲背景
2.飛機和噴氣動畫
一、添加游戲背景
首先要注意的是self.size和self.view.frame.size這兩個尺寸是不相同的,以前上課的時候沒有分清楚,結果添加的背景總是尺寸不對,為了簡便的解決這個問題直接在didMoveToView中添加這樣的一行代碼
-(void)didMoveToView:(SKView *)view {
self.size = self.view.frame.size;
[self backgroundNode];
[self planeNode];
}
接下來設置背景
-(void)backgroundNode {
SKSpriteNode *bg = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
//背景圖片在最底層,所以設置zPosition = 0
bg.zPosition = 0;
//為了防止background.png和屏幕尺寸不同,直接設置圖片尺寸和屏幕一樣大小
bg.size = self.size;
//這里設置錨點和bg的坐標都為0點
bg.position = CGPointZero;
bg.anchorPoint = CGPointZero;
[self addChild:bg];
}
附上一張錨點的圖片
錨點圖片
二、飛機以及噴氣動畫
-(void)planeNode {
SKSpriteNode *plane = [SKSpriteNode spriteNodeWithImageNamed:@"hero1"];
plane.name = @"plane";
//plane位于背景的上層,所以設置zPosition = 1
plane.zPosition = 1;
//調整一下飛機的大小和初始位置
plane.xScale = 0.6;
plane.yScale = 0.6;
plane.position = CGPointMake(self.size.width/2, 50);
[self addChild:plane];
//噴氣動畫,因為這里只有兩張紋理圖片,不超過3張不建議使用for循環,超過3張在后續會提到
//首先將兩張圖片轉換成紋理圖片
SKTexture *planeTexture1 = [SKTexture textureWithImageNamed:@"hero1"];
SKTexture *planeTexture2 = [SKTexture textureWithImageNamed:@"hero2"];
//接著將這兩張紋理圖片添加到數組
NSArray *textureArr = [NSArray arrayWithObjects:planeTexture1, planeTexture2, nil];
//將這個紋理數組轉換成每張圖片顯示0.2s的動作
SKAction *textureAct = [SKAction animateWithTextures:textureArr timePerFrame:0.2];
//無限循環這個動作
SKAction *repeatTexture =[SKAction repeatActionForever:textureAct];
//然后再讓plane執行這個動作就會持續噴氣這個動畫
[plane runAction:repeatTexture];
}