参考SpriteKit 创建游戏的教程今天自己动手做了一下,现在记录一下自己怎么做的,今天之做了第一步,一共有三个部分。
第一步,项目搭建。
1.在Xcode打开之后,选择File Menu > New > Project,然后你可能会看到下面的示意图所显示的内容:
随便起个名字,我就叫它:2014airplane了。
2.创建成功后,点击运行如果模板运行成功后接着来。
3.复制这些图片到你项目中的指定目录并且要确保你的“Copy Items into destination group's folder(如果需要)”被选上。
4.代码修改如下:
MyScene.h中的代码:
// // MyScene.h // 2014airplane // // Copyright (c) 2014年 com.wildcat. All rights reserved. // #import <SpriteKit/SpriteKit.h> #import <CoreMotion/CoreMotion.h> @interface MyScene : SKScene<UIAccelerometerDelegate>{ CGRect screenRect; CGFloat screenHeight; CGFloat screenWidth; double currentMaxAccelX; double currentMaxAccelY; } //声明变量 //声明运动管理器 @property (strong,nonatomic)CMMotionManager *motionManager; @property SKSpriteNode *plane; //飞机 @property SKSpriteNode *planeShadow; //飞机倒影 @property SKSpriteNode *propeller; //螺旋桨 @end
MyScene.m中的代码:
// // MyScene.m // 2014airplane // // Created by wildcat on 14-2-13. // Copyright (c) 2014年 com.wildcat. All rights reserved. // #import "MyScene.h" @implementation MyScene -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { //设置场景大小 screenRect=[[UIScreen mainScreen] bounds]; screenHeight=screenRect.size.height; screenWidth=screenRect.size.width; //设置飞机图片 _plane=[SKSpriteNode spriteNodeWithImageNamed:@"PLANE 8 N.png"]; _plane.scale=0.6; //缩放比例 _plane.zPosition=2; //纵坐标 _plane.position=CGPointMake(screenWidth/2, 15+_plane.size.height/2); //设置飞机的初始位置 [self addChild:_plane]; //添加背景 SKSpriteNode *backgroud=[SKSpriteNode spriteNodeWithImageNamed:@"airPlanesBackground.png"]; backgroud.position=CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); [self addChild:backgroud]; //添加飞机背景 _planeShadow=[SKSpriteNode spriteNodeWithImageNamed:@"PLANE 8 SHADOW.png"]; _planeShadow.scale=0.6; _planeShadow.zPosition=1; _planeShadow.position=CGPointMake(screenWidth/2+15, _planeShadow.size.height/2); [self addChild:_planeShadow]; //添加螺旋桨 _propeller=[SKSpriteNode spriteNodeWithImageNamed:@"PLANE PROPELLER 1.png"]; _propeller.scale=0.2; _propeller.position=CGPointMake(screenWidth/2, _plane.size.height+10); SKTexture *propeller1=[SKTexture textureWithImageNamed:@"PLANE PROPELLER 1.png"]; SKTexture *propeller2=[SKTexture textureWithImageNamed:@"PLANE PROPELLER 2.png"]; SKAction *spin=[SKAction animateWithTextures:@[propeller1,propeller2] timePerFrame:0.1]; SKAction *spinForever=[SKAction repeatActionForever:spin]; [_propeller runAction:spinForever]; [self addChild:_propeller]; //设置运动管理器 self.motionManager=[[CMMotionManager alloc] init]; self.motionManager.accelerometerUpdateInterval=0.2; [self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) { [self outputAccelertionData:accelerometerData.acceleration]; if (error) { NSLog(@"%@",error); } }]; } return self; } -(void)outputAccelertionData:(CMAcceleration)acceleration{ currentMaxAccelX=0; currentMaxAccelY=0; if (fabs(acceleration.x>fabs(currentMaxAccelX))) { currentMaxAccelX=acceleration.x; } if (fabs(acceleration.y>fabs(currentMaxAccelY))) { currentMaxAccelY=acceleration.y; } } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { /* Called when a touch begins */ } //Update现在主要处理两件事情:更新你的位置和交换不同的sprite -(void)update:(CFTimeInterval)currentTime { /* Called before each frame is rendered */ //NSLog(@"one second"); float maxY = screenWidth - _plane.size.width/2; float minY = _plane.size.width/2; float maxX = screenHeight - _plane.size.height/2; float minX = _plane.size.height/2; float newY = 0; float newX = 0; if(currentMaxAccelX > 0.05){ newX = currentMaxAccelX * 10; _plane.texture = [SKTexture textureWithImageNamed:@"PLANE 8 R.png"]; } else if(currentMaxAccelX < -0.05){ newX = currentMaxAccelX*10; _plane.texture = [SKTexture textureWithImageNamed:@"PLANE 8 L.png"]; } else{ newX = currentMaxAccelX*10; _plane.texture = [SKTexture textureWithImageNamed:@"PLANE 8 N.png"]; } newY = 6.0 + currentMaxAccelY *10; float newXshadow = newX+_planeShadow.position.x; float newYshadow = newY+_planeShadow.position.y; newXshadow = MIN(MAX(newXshadow,minY+15),maxY+15); newYshadow = MIN(MAX(newYshadow,minX-15),maxX-15); float newXpropeller = newX+_propeller.position.x; float newYpropeller = newY+_propeller.position.y; newXpropeller = MIN(MAX(newXpropeller,minY),maxY); newYpropeller = MIN(MAX(newYpropeller,minX+(_plane.size.height/2)-5),maxX+(_plane.size.height/2)-5); newX = MIN(MAX(newX+_plane.position.x,minY),maxY); newY = MIN(MAX(newY+_plane.position.y,minX),maxX); _plane.position = CGPointMake(newX, newY); _planeShadow.position = CGPointMake(newXshadow, newYshadow); _propeller.position = CGPointMake(newXpropeller, newYpropeller); } @end
转载请说明:本文转自http://blog.csdn.net/wildcatlele