最近发现Xcode自带的2D游戏开发框架SpriteKit可以直接引入到APP中进行混合开发,这就是说可以开发出既带业务应用又带游戏的苹果APP,咋怎么觉得这是一个自己的小发现....呵呵.....,查了下其实人家早有人这样做了........发现这功能我当然很开了,所以下了两个案例准备学学。以前业余时间也学过一下cocos2d-x这样的跨平台游戏框架,也做过小案例,所以感觉这个框架并不麻烦,而且比cocos2d-x简单。并且这框架我不应该像C2D-X那样学了就扔哪里不管了,因为IOS开发正是我当下工作。。也许以后我做的APP都会隐藏几个小游戏在里面,等app审核过了再放出来,多么惬意的想法。

今天是第一次笔记,我直接创建一个xcode自带的spritekit小案例来说下我对这的理解。

2D游戏涉及到使用类其实很少的,主要围绕精灵、场景两个核心的类在转,精灵就是游戏中的角色、玩家操作的角色、游戏里面的怪物角色,场景就是游戏的背景了, spriteKit里面这些类都继承与SkNode。下面有一截图你可以看下截图

如果你把上面几个类搞透测了,做个小游戏应该对你来说不麻烦, 如果要做复杂的游戏,那当然是不行了,这框架现在好像还能写OpenGL做角色渲染了,那复杂得很,复杂度不小于c语言。

下面我贴代码,我在原本官方自带案例基础上,增加了纹理类使用, 场景背景的设置,节点层的设置

一、纹理

纹理就是将整个动作分割为若干个图片,然后放到一个数组中去,然后将需要使用这个

纹理的精灵增加一个行为,将上面的纹理数组增加到行为中, 然后一个连贯的动作就出来了。

其实在ios开发中也可以给一个视图绑定一个由若干图片组合而成的动画。

我这里没有整套行为的图片,这里只是实现这个功能而已

SKScene:场景初始化时执行的代码实现这个功能。

- (instancetype)initWithSize:(CGSize)size
{

    if (self = [super initWithSize:size]) {
        /*首先创建第一个精灵节点,设置精灵节点的背景图片,这里设置精灵节点的图片方式很多,我这里也是用的纹理,你也可以直接用.backgroundimage,是一样的*/
         // SKSpriteNode *  FirstSkNodeX = [SKSpriteNode spriteNodeWithImageNamed:<#(nonnull NSString *)#>];
        UIImage  *BackgourndTextureImge=[UIImage imageNamed:@"planeBack"];
       SKTexture *BackgourndTexture = [SKTexture  textureWithImage:BackgourndTextureImge];
         SKSpriteNode *  FirstSkNode = [SKSpriteNode spriteNodeWithTexture:BackgourndTexture size:self.size];
        FirstSkNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
        FirstSkNode.name = @"Backgournd";
        FirstSkNode.zPosition = 0;/*将该精灵设置的位置设置到0层,0=最底层,这属性=同html中的 zindex,精灵中的层一定要记得设置,否则初始化或则经过一个动作后你看不到有可能*/
         [self addChild:FirstSkNode];

        /*下面是行为动画纹理
         BearImages.atlas=代表一个文件夹,记得文件夹后面加 .atlas,然后将整套行为切分图片放进去
          */

        SKTextureAtlas *atlas = [SKTextureAtlas atlasNamed:@"BearImages.atlas"];
        SKTexture *f1 = [atlas textureNamed:@"planeBack"];
        SKTexture *f2 = [atlas textureNamed:@"planeBack1"];
        NSArray *monsterWalkTextures = @[f1,f2];
         /*下面是一个循环执行的Action,这里实现的效果是,精灵不停切换monsterWalkTextures 里面的纹理图片*/
        SKAction *walkAnimation = [SKAction animateWithTextures:monsterWalkTextures timePerFrame:0.1];

        [FirstSkNode runAction:[SKAction repeatActionForever:walkAnimation]];
    }
    return self;

}
-(void)didMoveToView:(SKView *)view {

}
/*下面这个是官方原本有的方法,你自己通过xcode创建一个案例就知道了,点一下就增加一个飞机*/
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    for (UITouch *touch in touches) {
        CGPoint location = [touch locationInNode:self];

        SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
        sprite.zPosition=1;//场景中的层
        sprite.xScale = 0.15;//精灵大小
        sprite.yScale = 0.15;//精灵大小
        sprite.position = location;//精灵所在位置
        ///每秒转动一圈
     SKAction *action = [SKAction rotateByAngle:M_PI duration:1];
        ///重复行为
        [sprite runAction:[SKAction repeatActionForever:action]];

        [self addChild:sprite];
    }
}

-(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */

}

调用地方也有小改动

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;
    /* Sprite Kit applies additional optimizations to improve rendering performance */
    skView.ignoresSiblingOrder = YES;

    GameScene *scene = [[GameScene alloc]initWithSize:skView.bounds.size];

    scene.scaleMode = SKSceneScaleModeAspectFill;

    [skView presentScene:scene];
}

IOS 2D游戏开发框架 SpriteKit的更多相关文章

  1. IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)

    这次包括之后讲的spritekit 我都会围绕一个案例来说,这个案例就是一个简单的2d飞机大战游戏,今天这里我讲创建敌对精灵,就是敌对飞机,敌对飞机不停的被刷新到屏幕上.....当然这里涉及到的类其实 ...

  2. IOS 2D游戏开发框架 SpriteKit-->续(创建用户角色精灵--原创)

    一.主要实现   今天spritekit实现创建玩家角色精灵(SKSpriteNode *), 增加角色精灵的手势操作,这里增加的手势计算方法与objective-c中是不一样的,因为objectiv ...

  3. IOS 2D游戏开发框架 SpriteKit-->续(postion,锚点,游戏滚动场景)

    一. Postion 这里的postion和app开发中的layer.postion是一样的,postion的值代表该视图在父节点中的相对位置, 比如一个试图的父节点是self.view, 这里我们想 ...

  4. IOS 2D游戏开发框架 SpriteKit-->续(完善角色功能)

    一.说明       今天给角色精灵增加了子弹发射功能,增加了子弹与敌对精灵的碰撞检测,当角色精灵子弹与敌对精灵碰撞后,它们都会从屏幕上消失. 二.场景层SKScene的修改 1. 在初始化场景层的方 ...

  5. Unity3d Platformer Pro 2D游戏开发框架使用教程

    前言 Platformer Pro框架是Unity3d AssetStore上一个非常强大和受欢迎的2d游戏开发框架,这个教程的大部分翻译于官方文档,一部分是工作总结,还有一部分是视频教程文档化.这个 ...

  6. 初识phaser框架——开源的HTML5 2D游戏开发框架

    背景: 在网上看到,65行实现flappy bird,感到很好奇.原来是使用开源的2D游戏框架 phaser开发的. 什么是phaser2D游戏开发框架呢? 借鉴与网上的资料: 1.    Phase ...

  7. iOS开发实战-基于SpriteKit的FlappyBird小游戏

    写在前面 最近一直在忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了. SpriteKit简介 SpriteKit是iOS 7之后苹果推出的2D游戏框架 ...

  8. CosmosEngine - Unity3D /2D 轻量级游戏开发框架

    CosmosEngine https://github.com/mr-kelly/CosmosEngine 快速入门 简介 特性 约定 整体架构图 使用经验 工作流 未来功能 快速入门 1.将NGUI ...

  9. 基于 Cocos2d-x-lua 的游戏开发框架 Dorothy 简介

    基于 Cocos2d-x-lua 的游戏开发框架 Dorothy 简介 概述 Dorothy 是一个在 Cocos2d-x-lua 基础上发展起来的分支, 它去掉 Cocos2d-x-lua 那些过多 ...

随机推荐

  1. getattribute()与getparameter()的区别

    1.它们取到的值不同.getAttribute取到的是对象(object),而getParameter取到的是String. 2.数据传递路劲不同.request.getParameter方法传递的数 ...

  2. PHP性能优化工具–xhprof安装

    PHP性能优化工具–xhprof安装,这里我先贴出大致的步骤: 1.获取xhprof 2.编译前预处理 3.编译安装 4.配置php.ini 5.查看运行结果 那么下面我们开始安装xhprof工具吧: ...

  3. c#设计模式-观察者模式

    Observer 与 Subject 互为耦合,但是这种耦合的双方都依赖于抽象,而不依赖于具体. 一.观察者模式 目的 我们都知道解决一个问题有N种解决方式,但在面向对象的设计中如何能做到“高内聚,低 ...

  4. 常用的java类型转json的转换类

    公司不准引入json-lib-2.x.jar所以只好自己写了一个基本类型的object转json的类,然后支持8种基本类型和javabean,list,map,array,使用putJSON方法,ke ...

  5. css多行文本省略号问题

    已知,单行文本溢出内容用省略号代替,css代码如下: text-overflow: ellipsis; 溢出部分用...代替 white-space: nowrap; //强制在一行显示 overfl ...

  6. .NET面试题解析(01)-值类型与引用类型

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还 ...

  7. 图像映射map

    <map>标签:带有可点击区域的图像映射 定义一个客户端图像映射.图像映射(image-map)指带有可点击区域的一幅图像. 效果图: 点击相应蓝色标签可进入详情页面浏览. 代码: < ...

  8. Deep learning:四十四(Pylearn2中的Quick-start例子)

    前言: 听说Pylearn2是个蛮适合搞深度学习的库,它建立在Theano之上,支持GPU(估计得以后工作才玩这个,现在木有这个硬件条件)运算,由DL大牛Bengio小组弄出来的,再加上Pylearn ...

  9. inuit.css – 基于 Sass 的强大,可扩展的 CSS 框架

    inuit.css 是一个强大的,可扩展的 CSS 框架,另外还是基于 Sass,面向对象的框架.inuit.css 是建立在 BEM 风格的命名约定,非常适合于想要专注于创意而不是代码的设计师以及喜 ...

  10. Azure PowerShell (1) PowerShell整理

    <Windows Azure Platform 系列文章目录> 把之前Azure ASM的PowerShell都整理好了. https://github.com/leizhang1984/ ...