Objective-c粒子动画
本人开发的开发者技术变现资源聚集地,大家支持下,下面是网址
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粒子动画的更多相关文章
- 7款让人惊叹的HTML5粒子动画特效(转载)
1.HTML5 Canvas粒子模拟效果 这是一款利用HTML5 Canvas模拟出来的30000个粒子动画,当你用鼠标在canvas画布上移动时,鼠标周围的一些粒子就会跟着你移动,并形成一定的图案, ...
- canvas学习之粒子动画
项目地址:http://pan.baidu.com/s/1ccTptc 粒子动画意思就是把一个图片粒子画,然后使用粒子作出动画效果,主要两个问题:一个图片如何粒子化,这里面我们使用canvas的get ...
- 7款让人惊叹的HTML5粒子动画特效
HTML5的很大一个优势就是可以更加便捷高效地制作网页粒子动画特效,特别是Canvas特性,可以实现在网页上绘制任何图形和动画.本文要分享7款让人惊叹的HTML5粒子动画特效,这些粒子特效都提供源代码 ...
- WPF特效-粒子动画
原文:WPF特效-粒子动画 WPF实现泡泡龙小游戏效果. /// -Ball to Ball Collision - Detection and Handling /// http:// ...
- 带着canvas去流浪系列之九 粒子动画【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- 带着canvas去流浪系列之九 粒子动画
[摘要] canvas实现粒子动画 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 粒子特效 粒子特效一般指密集点阵效果,它并不是canvas独有 ...
- 【带着canvas去流浪(9)】粒子动画
目录 一. 粒子特效 二. 开发中遇到的问题 2.1 卡顿 2.2 轨迹 2.3 复位 2.4 防护层 2.5 二维向量类 三. 实现讲解 3.1 粒子类的update方法 3.2 粒子群的绘制 3. ...
- vue-particles粒子动画插件的使用和爬坑出现垂直滚动条
1下载==>cnpm install vue-particles --save-dev 2引入 注册-->main.js//插件 import VueParticles from 'vue ...
- js canvas 粒子动画 电子表
前言 从我接触canvas的第一天就觉得canvas很有趣,想搞点事情,这几天终于忍不住了,于是他来了. 先看效果 这里我做了四个大家有兴趣可以看完文章, ...
随机推荐
- arcgis api for js入门开发系列五地图态势标绘(含源代码)
上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下: 本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/ ...
- Android中点击事件的实现方式
在之前博文中多次使用了点击事件的处理实现,有朋友就问了,发现了很多按钮的点击实现,但有很多博文中使用的实现方式有都不一样,到底是怎么回事.今天我们就汇总一下点击事件的实现方式. 点击事件的实现大致分为 ...
- ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑
闲话不说,先上图: 这是IOS上的显示效果,代码如下: HTML部分: <body ng-app="starter" ng-controller="actionsh ...
- 学习笔记:发现一个IE版本判断的好方法
web开发就不得不面对浏览器兼容性问题,特别是IE的兼容问题.在前端代码中经常要处理一些兼容格式,为了解决这个问题网上找了找识别浏览器版本的方法. 常规js方法 找到一个方法,还不错,可以识别出各 ...
- Debian下安装mono
从mono的官网上查,debian的步骤写得太乱了.其实总结起来,就是这么几步: apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --rec ...
- 【腾讯bugly干货分享】微信Android热补丁实践演进之路
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1264& ...
- web音乐播放器总结
前言 项目暂时告一段落,胸中有股炽热之气望喷涌而出!忍不住吐槽,为什么程序员要加班啊,为什么产品下达deadline,就得把这生死剑架在程序员的脖子上.卧槽,听说程序员在国外是叫工程师的.最近看了很多 ...
- 探索 Linux 系统的启动过程
引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...
- ABP源码分析二十九:ABP.MongoDb
这个Module通过建立一个MongoDbRepositoryBase<TEntity> 基类,封装了对MongoDb数据库的操作. 这个module通过引用MongoDB.Driver, ...
- ABP框架 - 领域事件(EventBus)
文档目录 本节内容: EventBus 注入 IEventBus 获取默认实例 定义事件 预定义事件 处理完异常 实体修改 触发事件 处理事件 处理基类事件 处理程序异常 处理多个事件 处理程序注册 ...