iOS游戏开发のSpriteKit初识(1)

Talk is cheap!!!
1.新建工程


iOS游戏开发のSpriteKit初识(1)_第1张图片
1.创建
iOS游戏开发のSpriteKit初识(1)_第2张图片
没什么特别要注意的

2.导入SpriteKit.framework


iOS游戏开发のSpriteKit初识(1)_第3张图片
iOS游戏开发のSpriteKit初识(1)_第4张图片
SpriteKit

3.引入头文件


iOS游戏开发のSpriteKit初识(1)_第5张图片
引入头文件

4.代码
- (void)viewDidLoad {
[super viewDidLoad];
//1.必须创建的SKView---最外层容器
SKView *skview = [[SKView alloc]initWithFrame:self.view.bounds];

//配置容器
skview.showsFPS = YES;
skview.showsDrawCount = YES;
skview.showsNodeCount = YES;
skview.backgroundColor = [UIColor blueColor];//给容器背景色是无效的
[self.view addSubview:skview];

//2.必须创建的SKScene---场景
//SKScene的frame是只读的,创建也无需定位secene,因为默认铺满present出它的SKView,相当于把scene拉伸或压扁到场景中

SKScene *scene = [SKScene sceneWithSize:CGSizeMake(600, 600)];
//通过scaleMode可以调整scene在skview中的填充模式
scene.scaleMode = SKSceneScaleModeAspectFit;
scene.backgroundColor = [UIColor redColor];
[skview presentScene:scene];//展示


//3.创建游戏元素SKNode子类---元素
SKLabelNode *lab = [SKLabelNode labelNodeWithText:@"Hello World"];
//默认position{0,0}似乎是node的x中心,y底部?
//以左下为原点(0,0)
lab.position = CGPointMake(lab.frame.size.width*0.5, 0);

NSLog(@"---%@",[NSValue valueWithCGPoint:lab.position]);
[scene addChild:lab];
}

4.效果图


iOS游戏开发のSpriteKit初识(1)_第6张图片
hello world!

至此,最基础的创建场景、简单控件、简单调整位置结束

下面是spritekit的动画、动画组,动画组按顺序执行
需要注意的是,动画位移及缩放参照SKScene本身的size

if (self.lab) {
    self.lab.name = nil;
    SKAction *moveup = [SKAction moveByX:0 y:40 duration:1];
    SKAction *zoom = [SKAction scaleTo:2 duration:0.5];
    SKAction *sequence = [SKAction sequence:@[moveup,zoom]];
    [self.lab runAction:sequence];
}

下面是SKview切换scene的转场动画(SKTrasition大概有13种转场方式,都很丑)

[skview presentScene:[SKScene sceneWithSize:CGSizeMake(400, 600)] transition:[SKTransition doorsOpenHorizontalWithDuration:2]];

SKNode可已添加子SKNode,跟随父node动作

SKSpriteNode *node = [[SKSpriteNode alloc]initWithColor:[SKColor redColor] size:CGSizeMake(40, 30)];
//设置node的位置,上下左右居中
node.position = CGPointMake(CGRectGetMidX(self.view.frame), CGRectGetMidY(self.view.frame));
[scene addChild:node];
//给node添加子node,子node跟随父node动画,自身动画不变
SKSpriteNode *left = [self createEar];
left.position = CGPointMake(-28, 6);
[node addChild:left];
SKSpriteNode *right = [self createEar];
right.position = CGPointMake(28, 6);
[node addChild:right];

//给node添加动作
SKAction *sequence = [SKAction sequence:@[[SKAction waitForDuration:1],[SKAction moveByX:100 y:-50 duration:1],[SKAction waitForDuration:1],[SKAction moveByX:-100 y:50 duration:1]]];
SKAction *repeat = [SKAction repeatActionForever:sequence];
[node runAction:repeat];

菜鸟们可能还需要看一下这个,另起了一个创建方法

-(SKSpriteNode *)createEar
{
SKSpriteNode *light = [[SKSpriteNode alloc] initWithColor:[SKColor yellowColor] size:CGSizeMake(8,8)];
SKAction *blink = [SKAction sequence:@[[SKAction fadeOutWithDuration:0.2],[SKAction fadeInWithDuration:0.2]]];
[light runAction:[SKAction repeatActionForever:blink]];
return light;
}

你可能感兴趣的:(iOS游戏开发のSpriteKit初识(1))