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

https://www.baiydu.com

前面贴过几篇关于SpriteKit的案例文章,其中涉及到的动画都是材质类的图片切换或则常规的动画效果,没涉及到今天要说的粒子动画,今天说的粒子动画就是在游戏中实现更佳炫酷的效果必须使用的类,OC中粒子动画主要涉及到两个类,CAEmitterLayer,CAEmitterCell,第一个是动画的执行类,第二个是动画的实现类,虽只有两个类,属性也不多,但是想要理解这两个类,并且灵活运用它们还是有一定难度的。应为粒子动画在游戏开发中算是最难的技术了,当前比较火的游戏开发框架,大多粒子动画效果都是用工具制作,比如3dmax这样的工具,虽然oc把实现粒子动画的类优化得很容易很简单,但是难度还是有的,不好理解。我接下去的步骤就是先解释下这两个类,然后会贴上一个对每句代码都详细解释过的案例。

一、涉及类

1、CAEmitterLayer(粒子动画执行类,这里你把它想成是实现粒子动画的导演类)
/* The array of emitter cells attached to the layer. Each object must
* have the CAEmitterCell class. */
这个数组是这个层的附加发射器层, 每个对象必须至少有一个粒子类,
@property(nullable, copy) NSArray<CAEmitterCell *> *emitterCells;

2、CAEmitterCell(粒子类,这个类可以想成是粒子动画实现类,用它来实现粒子动画后,放入到CAEmitterLayer中去执行)

二、详细案例

 @interface SnowViewController ()

 @end

 @implementation SnowViewController

 - (void)viewDidLoad
{
[super viewDidLoad]; flakeLayer = [CAEmitterLayer layer]; CGRect bounds = [[UIScreen mainScreen] bounds]; //下面是设置发射器在屏幕上的位置,
flakeLayer.emitterPosition = CGPointMake(bounds.size.width / , bounds.size.height/); /*下面是发射器的size,决定了粒子的出生位置范围。比如下面的设置为0,0那么所有的粒子出生轨迹起点都将是发射器的中心点,你可以想成是模拟器的中心点 可以把这个范围与emitterShape属性结合来想*/
flakeLayer.emitterSize = CGSizeMake(,); // 发射模型决定出生粒子的运动轨迹显示的形状
flakeLayer.emitterShape =kCAEmitterLayerLine;//kCAEmitterLayerRectangle //发射模式
flakeLayer.emitterMode =kCAEmitterLayerSurface;// kCAEmitterLayerOutline //申明一个粒子类
CAEmitterCell *flakeCell = [CAEmitterCell emitterCell];
//是个CGImageRef的对象,既粒子要展现的图片
flakeCell.contents = (id)[[UIImage imageNamed:@"FFFlake.png"] CGImage];
//每秒出生的粒子数量
flakeCell.birthRate = ;
//生命周期 1.2秒之后消失
flakeCell.lifetime = 120.0;
//生命周期范围
flakeCell.lifetimeRange = 0.5;
//速度//粒子从出生到运动轨迹的终点速的速度,如果这里指设置很大那么屏幕的粒子就会增多,出生率就会加快
flakeCell.velocity = ;
//速度范围
flakeCell.velocityRange = ;
//粒子y方向的加速度分量--向 粒子y轴方向移动
flakeCell.xAcceleration = ;
// upx-y平面的发射方向 ....>> emissionLatitude:发射的z轴方向的角度
flakeCell.emissionLongitude = -M_PI / ;
// 发射器在一个范围内的随机发射角度,这里如果设置为0那么,发射器的角度就会固定,如果设置为圆周率,那么出生粒子的发射范围就会在360度范围内随机发射粒子角度
flakeCell.emissionRange = M_PI ; //这里代表粒子出生后完成运动轨迹中带的效果,如果是0那么在生命周期内就会以平滑的形式移动,假如这里我们设置为
//360那么 在生命周期内它就会旋转的形式移动
flakeCell.spinRange =; flakeCell.scale = 1.0;//缩放比例:
flakeCell.scaleSpeed = 0.1;//1.0;//缩放比例速度
flakeCell.scaleRange = 1.0;//缩放比例范围; flakeCell.color = [[UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0] CGColor];//粒子的颜色
flakeCell.redRange = 1.0;//一个粒子的颜色red 能改变的范围;
flakeCell.redSpeed = 0.1;//粒子red在生命周期内的改变速度;
flakeCell.blueRange = 1.0;//一个粒子的颜色blue 能改变的范围
flakeCell.blueSpeed = 0.1;//粒子blue在生命周期内的改变速度
flakeCell.greenRange = 1.0;//个粒子的颜色green 能改变的范围;
flakeCell.greenSpeed = 0.1;//粒子green在生命周期内的改变速度;
flakeCell.alphaSpeed = -0.08;//粒子透明度在生命周期内的改变速度 flakeLayer.emitterCells = [NSArray arrayWithObject:flakeCell];//粒子发射的粒子 [self.view.layer insertSublayer:flakeLayer atIndex:]; }

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

 

Objective-c粒子动画的更多相关文章

  1. 7款让人惊叹的HTML5粒子动画特效(转载)

    1.HTML5 Canvas粒子模拟效果 这是一款利用HTML5 Canvas模拟出来的30000个粒子动画,当你用鼠标在canvas画布上移动时,鼠标周围的一些粒子就会跟着你移动,并形成一定的图案, ...

  2. canvas学习之粒子动画

    项目地址:http://pan.baidu.com/s/1ccTptc 粒子动画意思就是把一个图片粒子画,然后使用粒子作出动画效果,主要两个问题:一个图片如何粒子化,这里面我们使用canvas的get ...

  3. 7款让人惊叹的HTML5粒子动画特效

    HTML5的很大一个优势就是可以更加便捷高效地制作网页粒子动画特效,特别是Canvas特性,可以实现在网页上绘制任何图形和动画.本文要分享7款让人惊叹的HTML5粒子动画特效,这些粒子特效都提供源代码 ...

  4. WPF特效-粒子动画

    原文:WPF特效-粒子动画 WPF实现泡泡龙小游戏效果.     /// -Ball to Ball Collision - Detection and Handling    /// http:// ...

  5. 带着canvas去流浪系列之九 粒子动画【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  6. 带着canvas去流浪系列之九 粒子动画

    [摘要] canvas实现粒子动画 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 粒子特效 粒子特效一般指密集点阵效果,它并不是canvas独有 ...

  7. 【带着canvas去流浪(9)】粒子动画

    目录 一. 粒子特效 二. 开发中遇到的问题 2.1 卡顿 2.2 轨迹 2.3 复位 2.4 防护层 2.5 二维向量类 三. 实现讲解 3.1 粒子类的update方法 3.2 粒子群的绘制 3. ...

  8. vue-particles粒子动画插件的使用和爬坑出现垂直滚动条

    1下载==>cnpm install vue-particles --save-dev 2引入 注册-->main.js//插件 import VueParticles from 'vue ...

  9. js canvas 粒子动画 电子表

     前言 从我接触canvas的第一天就觉得canvas很有趣,想搞点事情,这几天终于忍不住了,于是他来了. 先看效果                       这里我做了四个大家有兴趣可以看完文章, ...

随机推荐

  1. 似懂非懂的localStorage和sessionStorage

    一.区别 相信很多人都见过这两个关于HTML5的新名词!HTML5种的web storage包含两种存储方式:localStorage和sessionStorage,这两种方式存储的数据不会自动发给服 ...

  2. 【干货分享】流程DEMO-合同会审表

    流程名: 合同会审表  业务描述: 合同的审批及签订  流程相关文件: 流程包.xml 事务呈批表业务服务.xml 事务呈批表主数据.xml  流程说明: 1.此流程必须先进行事务呈批表流程的配置才可 ...

  3. ucos实时操作系统学习笔记——任务间通信(队列)

    ucos操作系统中的queue机制同样使用了event机制来实现,其实和前面的sem,mutex实现类似,所不同的是对sem而言,任务想获得信号量,对mutex而言,任务想获得的是互斥锁.任务间通信的 ...

  4. 简易nginx TCP反向代理设置

    nginx从1.9.0开始支持TCP反向代理,之前只支持HTTP.这是我的系统示意图: 为何需要? 为什么需要反向代理?主要是: 负载均衡 方便管控 比如我现在要更新后端服务器,如果不用负载均衡的话, ...

  5. 分享我对 ASP.NET vNext 的一些感受,也许多年回过头看 So Easy!

    写在前面 阅读目录: Visual Studio "14" CTP 关于 ASP.NET vNext ASP.NET vNext 实践 后记 ASP.NET vNext 发布已经过 ...

  6. 使用boilerplate模版创建解决方案

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 话不多说,让我们开始干吧!对于还没有接触ABP框架或者接触时间还不是很长的小伙伴来说,我建议还是使用官方建议的做法,那就是到ABP ...

  7. java 锁4

    关于锁的分类 及 锁的灵活使用: 参见 http://blog.csdn.net/qaz13177_58_/article/details/21543515  有几句话说得相当不错: 锁的分类 : 同 ...

  8. Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx

    Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx 1. 大原则:分解+命名1 1.1. 命名规范1 1.2. 分层.DI和AOP是继OO1 1.3. 运算符可读性一般要比 ...

  9. Windows操作系统下tomcat安装版图文教程

    下载tomcat安装文件,官方下载地址是:http://tomcat.apache.org/,本文以tomcat-7.0.26版本为例进行安装过程的说明: 1.双击apache-tomcat-7.0. ...

  10. 有关“数据统计”的一些概念 -- PV UV VV IP跳出率等

    有关"数据统计"的一些概念 -- PV UV VV IP跳出率等 版权声明:本文为博主原创文章,未经博主允许不得转载. 此文是本人工作中碰到的,随时记下来的零散概念,特此整理一下. ...