游戏框架的搭建
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];
}
网友评论