这次包括之后讲的spritekit 我都会围绕一个案例来说,这个案例就是一个简单的2d飞机大战游戏,今天这里我讲创建敌对精灵,就是敌对飞机,敌对飞机不停的被刷新到屏幕上.....当然这里涉及到的类其实还是,精灵,和材质两个类,这两个类前两篇的案例中已经出现过,使用方法都一样,主要看逻辑,我这里主要是实现每间隔一段时间屏幕就刷新一个敌对飞机。飞机从屏幕高度为起点往下移动,当potion移动到0时将敌对飞机移出。

  1 /*这个方法是spritekit 的场景自带的,每过一秒就会被调用*/
  2 -(void)update:(CFTimeInterval)currentTime {
  3     [self BackMove:1];
  4
  5     [self initEnemySprite];//本次增加的创建敌对飞机的方法
  6
  7
  8 }
  9 /*创建敌对飞机*/
 10 -(void)initEnemySprite
 11 {
 12     /*此方法是放在update里面的所以是每秒执行一次,下面三个变量就是控制飞机刷新速度的,如果不控制,屏幕就会每秒都刷新一个飞机出来,那么不一会屏幕就会爆满, 这里每35秒刷新一架小型地址每400秒刷新一架中型飞机, 每700秒刷行一架大飞机*/
 13     _smallPlaneTime++;
 14     _mediumPlaneTime++;
 15     _bigPlaneTime++;
 16
 17
 18     //int RadomNumber=   (arc4random() % 100) + 0;
 19     int SpriteX=DEVICE_Width;
 20     /*随机精灵在x轴的位置*/
 21       int x = (arc4random() % (SpriteX-90)) + 45;
 22
 23     int speed = 0;
 24
 25
 26     if (_smallPlaneTime>35) {
 27         UIImage  *farTextureImageThree=[UIImage imageNamed:@"MemberTwo"];
 28         SKTexture *farTextureThree = [SKTexture  textureWithImage:farTextureImageThree];
 29
 30
 31         SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)];
 32         //增加敌对飞机受动力感应的范围
 33         foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size];
 34           /*飞机向下移动速度*/
 35          speed= (arc4random() % 5) + 2;
 36
 37          foePlane.position = CGPointMake(x, self.size.height);
 38          foePlane.zPosition=1;
 39         /*下面三个属性是设置敌对飞机的重力检测属性,之后它们都会用到,比如之后用户操作的飞机发射子弹打在它们上面,下面这属性就起作用了*/
 40         foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane;
 41         foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet;
 42         foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet;
 43         [self addChild:foePlane];
 44         /*当精灵的y坐标为0时将精灵从父节点移出*/
 45         [foePlane runAction:[SKAction sequence:@[[SKAction moveToY:0 duration:speed],[SKAction removeFromParent]]] completion:^{
 46             [foePlane removeFromParent];
 47         }];
 48        _smallPlaneTime=0;
 49
 50     }
 51
 52     if (_mediumPlaneTime>400) {
 53
 54
 55
 56         UIImage  *farTextureImageThree=[UIImage imageNamed:@"Teamer"];
 57         SKTexture *farTextureThree = [SKTexture  textureWithImage:farTextureImageThree];
 58          SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)];
 59         //增加敌对飞机受动力感应的范围
 60          foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size];
 61           /*飞机向下移动速度*/
 62           speed = (arc4random() % 2) + 2;
 63
 64         foePlane.position = CGPointMake(x, self.size.height);
 65
 66         foePlane.zPosition=1;
 67         /*下面三个属性是设置敌对飞机的重力检测属性,之后它们都会用到,比如之后用户操作的飞机发射子弹打在它们上面,下面这属性就起作用了*/
 68         foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane;
 69         foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet;
 70         foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet;
 71         [self addChild:foePlane];
 72         /*当精灵的y坐标为0时将精灵从父节点移出*/
 73         [foePlane runAction:[SKAction sequence:@[[SKAction moveToY:0 duration:speed],[SKAction removeFromParent]]] completion:^{
 74             [foePlane removeFromParent];
 75         }];
 76               _mediumPlaneTime=0;
 77
 78       }
 79
 80
 81        if (_bigPlaneTime>700) {
 82
 83
 84
 85
 86
 87
 88            UIImage  *farTextureImageThree=[UIImage imageNamed:@"Unknown"];
 89            SKTexture *farTextureThree = [SKTexture  textureWithImage:farTextureImageThree];
 90
 91
 92            SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)];
 93
 94
 95            //增加敌对飞机受动力感应的范围
 96            foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size];
 97
 98            /*飞机向下移动速度*/
 99             speed = (arc4random() % 5) + 3;
100            foePlane.position = CGPointMake(x, self.size.height);
101            foePlane.zPosition=1;
102            /*下面三个属性是设置敌对飞机的重力检测属性,之后它们都会用到,比如之后用户操作的飞机发射子弹打在它们上面,下面这属性就起作用了*/
103            foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane;
104            foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet;
105            foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet;
106            [self addChild:foePlane];
107            /*当精灵的y坐标为0时将精灵从父节点移出*/
108            [foePlane runAction:[SKAction sequence:@[[SKAction moveToY:5 duration:speed],[SKAction removeFromParent]]] completion:^{
109                [foePlane removeFromParent];
110            }];
111            _bigPlaneTime=0;
112
113        }
114
115
116
117
118
119 }

其实这里的精灵和材质类我都是封装了类的,这里为了显示代码,所以直接把封装类的代码写一起了。开发时不建议这样做。

下面是下载地址:http://download.csdn.net/detail/qq_35826634/9599204  有兴趣的朋友可以去下来看看

本人创业做的一款androidApp, 下载量已经有2000多万,各种当前热门的网络手机奖励红包全部集成,另外还有热门电影和淘宝高额优惠券!很适合各类型的用户。

 

转载于:https://www.cnblogs.com/xiaoliao/p/5754064.html

IOS 2D游戏开发框架 SpriteKit--续(创建敌对精灵)相关推荐

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

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

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

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

  3. 【Rust日报】2023-01-07 shura-一个安全的2D 游戏引擎,易于创建易于管理的游戏

    shura-一个安全的2D 游戏引擎,易于创建易于管理的游戏 shura是rust编写的一个安全,快速并且跨平台的游戏框架.shura使用一个2D组件系统.场景管理和group系统帮你管理一个大型游戏 ...

  4. Flutter教程之使用 Flutter Flame 快速轻松地创建 2D 游戏(教程含源码)

    Flutter 使您能够从单个代码库开发适用于 Android.iOS.桌面和 Web 等平台的应用程序.作为一个多平台的 UI 工具包,Flutter 团队致力于让各类开发者能够快速构建和发布应用. ...

  5. OpenGL学习笔记一之实战篇五 2D游戏(Breakout)之渲染精灵

    转载自 https://learnopengl-cn.github.io/06%20In%20Practice/2D-Game/03%20Rendering%20Sprites/ 本节暂未进行完全的重 ...

  6. 【中英双语】Unity:从零开始构建2D游戏

    [中英双语]Unity:从零开始构建2D游戏 通过制作 Unity 2D 游戏来学习 C# 编码 此教程共14.0小时,中英双语字幕,画质清晰无水印,源码附件全 课程英文名:Building 2D G ...

  7. iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)

    实战需求 使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏 本文价值与收获 看完本文后,您将能够作出下面的界面 实战代码 1.主界面 import SpriteKit im ...

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

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

  9. spritekit 动画_iOS 2D游戏引擎框架SpriteKit入门

    最近用闲暇时间了解了下iOS 7.0 SDK就提供的一个2D游戏引擎框架SpriteKit,用此实现了一个之前比较流行的游戏"保卫萝卜"中的一个小场景,毕竟有具体需求的实践能提高学 ...

最新文章

  1. OpenCL编程详细解析与实例
  2. Spark集群启动时worker节点启不起来
  3. java list 结构_Java中常见数据结构List之ArrayList
  4. INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES错误解决方法
  5. postDelayed总结
  6. 查看电脑python虚拟环境-Linux系统创建python虚拟环境
  7. buuoj-crypto 1
  8. 干货丨你知道Python中a += b和a = a + b的结果是不一样的吗?
  9. 程序员特有的9个坏习惯
  10. goahead如何使用cgi服务_QQ如何设置使用代理服务器?
  11. 高级软件工程课程第一次作业的小结
  12. 工作79:获取对应中文
  13. Golang程序性能分析(二)在Echo和Gin框架中使用pprof
  14. 递增运算符练习(JS)
  15. springboot的if else过多解决方案
  16. 华为手机linux驱动下载,华为手机驱动官方版
  17. PdgCntEditor系列教程一:基础知识
  18. 微信小程序展示弹窗的方式
  19. vue 对象提供的属性功能、通过axio请求数据(2)
  20. PM血泪总结项目管理中存在的教训

热门文章

  1. 大端和小端的判断及转换
  2. 【C语言】C语言实现面向对象编程之封装
  3. 【Linux】一步一步学Linux——iptables-restore命令(188)
  4. 【STM32】 keil软件工具--configuration详解(下)
  5. [Qt教程] 第47篇 进阶(七) 定制Qt帮助系统
  6. 计算机辅助药物设计局限,计算机辅助药物设计高效低耗
  7. springboot集成swagger2,以及swagger-ui.html访问404的问题解决:拦截器造成的
  8. pixhawk的姿态控制算法解读
  9. c语言函数汉诺塔不用move,C语言——汉诺塔问题(函数递归)
  10. 记录 之 不同的Normalization方式