本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址

https://www.baiydu.com

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

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

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

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

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

 

IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)的更多相关文章

  1. IOS 2D游戏开发框架 SpriteKit

    最近发现Xcode自带的2D游戏开发框架SpriteKit可以直接引入到APP中进行混合开发,这就是说可以开发出既带业务应用又带游戏的苹果APP,咋怎么觉得这是一个自己的小发现....呵呵....., ...

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

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

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

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

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

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

  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. Unity3D 创建一个简单的2D游戏

    开始研究Unity3d 中的2D游戏. 首先创建出一个项目: 然后创建出一个场景: 然后添加一个背景: 然后创建一个主人公对象: 可以是自己做的素材,也可以是用unity裁剪的素材, 下面贴出裁剪素材 ...

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

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

随机推荐

  1. C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置

    参考页面: http://www.yuanjiaocheng.net/webapi/test-webapi.html http://www.yuanjiaocheng.net/webapi/web-a ...

  2. GitHub管理代码-随笔

    公司一直用的SVN进行项目管理,平时便自己折腾了下Git,这里做下GitHub的最简单的记录... 在git上创建仓库等就免谈了,网上也有好多教程,直接从创建之后记录: 在github的readme文 ...

  3. Linux环境下常见漏洞利用技术(培训ppt+实例+exp)

    记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...

  4. 如何使用RobotFramework编写好的测试用例

    如何使用Robot Framework编写优秀的测试用例 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试 ...

  5. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

  6. CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口

    CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口 开始 像下面这样的四个视口的功能是很常用的,所以我花了几天时间在CSharpGL中集成了这个功能. 在CSh ...

  7. 关于百度编辑器UEditor的一点说明

    大家在使用的时候要特别注意editor_config.js中的“URL”这个参数 我的理解:1.这个参数是editor整个结构的总路径          2.首先要把这个路径配置好了.才能正常的显示, ...

  8. 在linux系统中安装VSCode(Visual Studio Code)

    在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网  ...

  9. Jquery网页元素里面的操作以及JSON

    如果网页里面有复选框,下拉列表Jquery怎么来操作,主要是怎么选取数据,就是取选中值,第二个是设置哪一项选中 <script src="jquery-1.11.2.min.js&qu ...

  10. WCF学习之旅—请求与答复模式和单向模式(十九)

    一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务端有了答 ...