IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)
本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址
https://www.baiydu.com
这次包括之后讲的spritekit 我都会围绕一个案例来说,这个案例就是一个简单的2d飞机大战游戏,今天这里我讲创建敌对精灵,就是敌对飞机,敌对飞机不停的被刷新到屏幕上.....当然这里涉及到的类其实还是,精灵,和材质两个类,这两个类前两篇的案例中已经出现过,使用方法都一样,主要看逻辑,我这里主要是实现每间隔一段时间屏幕就刷新一个敌对飞机。飞机从屏幕高度为起点往下移动,当potion移动到0时将敌对飞机移出。
- /*这个方法是spritekit 的场景自带的,每过一秒就会被调用*/
- -(void)update:(CFTimeInterval)currentTime {
- [self BackMove:];
- [self initEnemySprite];//本次增加的创建敌对飞机的方法
- }
- /*创建敌对飞机*/
- -(void)initEnemySprite
- {
- /*此方法是放在update里面的所以是每秒执行一次,下面三个变量就是控制飞机刷新速度的,如果不控制,屏幕就会每秒都刷新一个飞机出来,那么不一会屏幕就会爆满, 这里每35秒刷新一架小型地址每400秒刷新一架中型飞机, 每700秒刷行一架大飞机*/
- _smallPlaneTime++;
- _mediumPlaneTime++;
- _bigPlaneTime++;
- //int RadomNumber= (arc4random() % 100) + 0;
- int SpriteX=DEVICE_Width;
- /*随机精灵在x轴的位置*/
- int x = (arc4random() % (SpriteX-)) + ;
- int speed = ;
- if (_smallPlaneTime>) {
- UIImage *farTextureImageThree=[UIImage imageNamed:@"MemberTwo"];
- SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree];
- SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)];
- //增加敌对飞机受动力感应的范围
- foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size];
- /*飞机向下移动速度*/
- speed= (arc4random() % ) + ;
- foePlane.position = CGPointMake(x, self.size.height);
- foePlane.zPosition=;
- /*下面三个属性是设置敌对飞机的重力检测属性,之后它们都会用到,比如之后用户操作的飞机发射子弹打在它们上面,下面这属性就起作用了*/
- foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane;
- foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet;
- foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet;
- [self addChild:foePlane];
- /*当精灵的y坐标为0时将精灵从父节点移出*/
- [foePlane runAction:[SKAction sequence:@[[SKAction moveToY: duration:speed],[SKAction removeFromParent]]] completion:^{
- [foePlane removeFromParent];
- }];
- _smallPlaneTime=;
- }
- if (_mediumPlaneTime>) {
- UIImage *farTextureImageThree=[UIImage imageNamed:@"Teamer"];
- SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree];
- SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)];
- //增加敌对飞机受动力感应的范围
- foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size];
- /*飞机向下移动速度*/
- speed = (arc4random() % ) + ;
- foePlane.position = CGPointMake(x, self.size.height);
- foePlane.zPosition=;
- /*下面三个属性是设置敌对飞机的重力检测属性,之后它们都会用到,比如之后用户操作的飞机发射子弹打在它们上面,下面这属性就起作用了*/
- foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane;
- foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet;
- foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet;
- [self addChild:foePlane];
- /*当精灵的y坐标为0时将精灵从父节点移出*/
- [foePlane runAction:[SKAction sequence:@[[SKAction moveToY: duration:speed],[SKAction removeFromParent]]] completion:^{
- [foePlane removeFromParent];
- }];
- _mediumPlaneTime=;
- }
- if (_bigPlaneTime>) {
- UIImage *farTextureImageThree=[UIImage imageNamed:@"Unknown"];
- SKTexture *farTextureThree = [SKTexture textureWithImage:farTextureImageThree];
- SKSpriteNode *foePlane = [SKSpriteNode spriteNodeWithTexture: farTextureThree size:CGSizeMake(farTextureThree.size.width/2.5, farTextureThree.size.height/2.5)];
- //增加敌对飞机受动力感应的范围
- foePlane.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:foePlane.size];
- /*飞机向下移动速度*/
- speed = (arc4random() % ) + ;
- foePlane.position = CGPointMake(x, self.size.height);
- foePlane.zPosition=;
- /*下面三个属性是设置敌对飞机的重力检测属性,之后它们都会用到,比如之后用户操作的飞机发射子弹打在它们上面,下面这属性就起作用了*/
- foePlane.physicsBody.categoryBitMask = SKRoleCategoryFoePlane;
- foePlane.physicsBody.collisionBitMask = SKRoleCategoryBullet;
- foePlane.physicsBody.contactTestBitMask = SKRoleCategoryBullet;
- [self addChild:foePlane];
- /*当精灵的y坐标为0时将精灵从父节点移出*/
- [foePlane runAction:[SKAction sequence:@[[SKAction moveToY: duration:speed],[SKAction removeFromParent]]] completion:^{
- [foePlane removeFromParent];
- }];
- _bigPlaneTime=;
- }
- }
其实这里的精灵和材质类我都是封装了类的,这里为了显示代码,所以直接把封装类的代码写一起了。开发时不建议这样做。
下面是下载地址:http://download.csdn.net/detail/qq_35826634/9599204 有兴趣的朋友可以去下来看看
本人创业做的一款androidApp, 下载量已经有2000多万,各种当前热门的网络手机奖励红包全部集成,另外还有热门电影和淘宝高额优惠券!很适合各类型的用户。
IOS 2D游戏开发框架 SpriteKit-->续(创建敌对精灵)的更多相关文章
- IOS 2D游戏开发框架 SpriteKit
最近发现Xcode自带的2D游戏开发框架SpriteKit可以直接引入到APP中进行混合开发,这就是说可以开发出既带业务应用又带游戏的苹果APP,咋怎么觉得这是一个自己的小发现....呵呵....., ...
- IOS 2D游戏开发框架 SpriteKit-->续(创建用户角色精灵--原创)
一.主要实现 今天spritekit实现创建玩家角色精灵(SKSpriteNode *), 增加角色精灵的手势操作,这里增加的手势计算方法与objective-c中是不一样的,因为objectiv ...
- IOS 2D游戏开发框架 SpriteKit-->续(完善角色功能)
一.说明 今天给角色精灵增加了子弹发射功能,增加了子弹与敌对精灵的碰撞检测,当角色精灵子弹与敌对精灵碰撞后,它们都会从屏幕上消失. 二.场景层SKScene的修改 1. 在初始化场景层的方 ...
- IOS 2D游戏开发框架 SpriteKit-->续(postion,锚点,游戏滚动场景)
一. Postion 这里的postion和app开发中的layer.postion是一样的,postion的值代表该视图在父节点中的相对位置, 比如一个试图的父节点是self.view, 这里我们想 ...
- Unity3d Platformer Pro 2D游戏开发框架使用教程
前言 Platformer Pro框架是Unity3d AssetStore上一个非常强大和受欢迎的2d游戏开发框架,这个教程的大部分翻译于官方文档,一部分是工作总结,还有一部分是视频教程文档化.这个 ...
- 初识phaser框架——开源的HTML5 2D游戏开发框架
背景: 在网上看到,65行实现flappy bird,感到很好奇.原来是使用开源的2D游戏框架 phaser开发的. 什么是phaser2D游戏开发框架呢? 借鉴与网上的资料: 1. Phase ...
- iOS开发实战-基于SpriteKit的FlappyBird小游戏
写在前面 最近一直在忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了. SpriteKit简介 SpriteKit是iOS 7之后苹果推出的2D游戏框架 ...
- Unity3D 创建一个简单的2D游戏
开始研究Unity3d 中的2D游戏. 首先创建出一个项目: 然后创建出一个场景: 然后添加一个背景: 然后创建一个主人公对象: 可以是自己做的素材,也可以是用unity裁剪的素材, 下面贴出裁剪素材 ...
- CosmosEngine - Unity3D /2D 轻量级游戏开发框架
CosmosEngine https://github.com/mr-kelly/CosmosEngine 快速入门 简介 特性 约定 整体架构图 使用经验 工作流 未来功能 快速入门 1.将NGUI ...
随机推荐
- C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置
参考页面: http://www.yuanjiaocheng.net/webapi/test-webapi.html http://www.yuanjiaocheng.net/webapi/web-a ...
- GitHub管理代码-随笔
公司一直用的SVN进行项目管理,平时便自己折腾了下Git,这里做下GitHub的最简单的记录... 在git上创建仓库等就免谈了,网上也有好多教程,直接从创建之后记录: 在github的readme文 ...
- Linux环境下常见漏洞利用技术(培训ppt+实例+exp)
记得以前在drops写过一篇文章叫 linux常见漏洞利用技术实践 ,现在还可以找得到(https://woo.49.gs/static/drops/binary-6521.html), 不过当时开始 ...
- 如何使用RobotFramework编写好的测试用例
如何使用Robot Framework编写优秀的测试用例 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试 ...
- 我设计的ASP.NET笔试题,你会多少呢
本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...
- CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口
CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口 开始 像下面这样的四个视口的功能是很常用的,所以我花了几天时间在CSharpGL中集成了这个功能. 在CSh ...
- 关于百度编辑器UEditor的一点说明
大家在使用的时候要特别注意editor_config.js中的“URL”这个参数 我的理解:1.这个参数是editor整个结构的总路径 2.首先要把这个路径配置好了.才能正常的显示, ...
- 在linux系统中安装VSCode(Visual Studio Code)
在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网 ...
- Jquery网页元素里面的操作以及JSON
如果网页里面有复选框,下拉列表Jquery怎么来操作,主要是怎么选取数据,就是取选中值,第二个是设置哪一项选中 <script src="jquery-1.11.2.min.js&qu ...
- WCF学习之旅—请求与答复模式和单向模式(十九)
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务端有了答 ...