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 ...
随机推荐
- 那些年【深入.NET平台和C#编程】
一.深入.NET框架 1..NET框架具有两个组件:CLR(公共语言运行时)和FCL(框架类库),CLR是.NET框架的基础 2.框架核心类库: System.Collections.Generic: ...
- 微软开源代码编辑器monaco-editor
官网上给出:”The Monaco Editor is the code editor that powers VS Code. A good page describing the code edi ...
- Extjs 让combobox写起来更简单
也已经写了很久时间的extjs ,每次都用到很多的combobox,配置很多东西觉得实在是太麻烦,所以根据常用到的情况写了一个简便的combobox,再次记录下来,以免放在某个地方忘记了找不到了. 定 ...
- Android SDK 与API版本对应关系
Android SDK版本号 与 API Level 对应关系如下表: Code name Version API level (no code name) 1.0 API level 1 ( ...
- Android 开发一定要看的15个实战项目
前言: 虽说网上有太多的Android课程,但是大多都是视频,有Android在线开发环境的几乎没有,但是对于学习Android的人来说拥有在线的Android开发环境是非常好的,可以随时动手操作学习 ...
- HTML5游戏源码 飞翔的字母 可自定义内容
相信大家都玩过飞翔的小鸟吧,当然,可能已经有很多人因为这个游戏砸了不少手机.吼吼. 废话不多说,回到主题,源码如下. 博客园上传空间大小有限制,没法上传了,需要打包源码的朋友们请留言邮箱地址.当然还有 ...
- TCP三次握手图解
- 斗天斗地斗控件 -- 与 Flyout 控件的斗争史
前言 在淘宝的收藏夹页面本地化过程中,收藏的宝贝和店铺的分类展示通过一个下拉菜单的方式进行展示.如果单独为此从头重写一个控件,那么不但费时费力,包括所有的动画方式都要全新设计,而且还容易出 bug.好 ...
- Alcatraz 的安装和删除
Xcode 所有的插件都安装在目录: ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/ 你也可以手工切换到这个目录来删除插件 ...
- Vue 给子组件传递参数
Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...