自2018年10月18日起,高德开发者论坛除车机板块外,其他板块将停止发帖与维护,如您有使用问题请 提交工单 联系我们,感谢您的理解。

查看: 817|回复: 0
打印 上一主题 下一主题

[应用案例] 粒子图层说明

[复制链接]
最佳答案
334 

8

主题

2587

帖子

5772

积分

超级版主

Rank: 8Rank: 8

积分
5772
跳转到指定楼层
楼主
发表于 2018-10-10 22:50:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发表帖子
API/SDK版本号: 6.5.0
产品: 3D地图
手机型号:
使用接口:
本帖最后由 郑翔宇er 于 2018-10-11 20:47 编辑

一、粒子图层说明        自SDK 6.5.0起,SDK提供一套粒子图层,这套粒子图层不仅可以实现雨天、雪天和雾霾天的效果,还可以通过用户自定义实现烟花爆炸和飞线等常见粒子特效,能满足需求且给用户很大的发挥空间。
   

二、实现方案

  粒子图层由多个粒子按照给定运动方式组成的效果

1、图层基本属性
   
    持续时长、最大粒子数量、是否可以循环
    最大粒子数量指的是支持的最大粒子数,主要是为性能考虑,建议不要太高
    如果设置为不可循环,粒子会在执行完一个生命周期后消失

2、初始状态设置

(1)初始的速度、初始的颜色、粒子图标


    如图所示,将粒子设置为心形图标,图标大小可以自定义通过 setStartParticleSize 设置,单位是像素,值得注意的是这里的大小和图片原始大小无关,太大的图片也会被压缩成指定的大小(图中设定大小为64x64)
    每个粒子都有一个自己的方向和旋转角度(图中只给出了部分示意),通过不同的方向和不同的速度可以实现一个发散的效果,如下雨便是将所有的粒子方向设置为从上到下。(速度还可以设置为0,太阳效果便是设置速度为0)SDK中RandomVelocityBetweenTwoConstants 提供了随机生成速度的方法
    可以看见图标之间颜色不一样,这是通过设置粒子发射时的颜色设置,图中是设置一个随机的区间,每次颜色在区间内随机选取。SDK中RandomColorBetWeenTwoConstants 提供了随机生成颜色的方法

(2)发射率

  
     可以看见这两张图的区别是,其中一张比较密集,这是有发射率导致的,发射率的意思是每秒钟发射多少个粒子,如果每秒发射一个就是左边的情况,而右边是每秒20个(注:控制台是为了调试方便添加的,时机粒子效果覆盖物中不存在控制台)。SDK中 ParticleEmissionModule 提供了发射率设置的方法。
     值得注意的是,发射率会收到粒子图层时长和最大数量的限制,比如每秒发射20个粒子,粒子时长为5s最大支持50个粒子,则在第3s粒子会达到60个,此时因为超过了最大数量,后2s都不会产生粒子,待有粒子消失后才会产生新的粒子。

(3)粒子时长
每个粒子都有一个存在的时间,时间过了就会消失。消失后又会有新的粒子产生,从而达到粒子不断连绵不断的效果。

(4)发射区域
    上面图中展示的点都从左上角发出,但下雨下过是从屏幕上方发射



    图中两者的差异在发射区域不同,左图是一个点,右图为一个矩形,下雨和下需的效果发射区域都和右图类似
    发射区域坐标原点为左上角,包含两种形式,一种是指定像素点如(100,100)表示距离左上角各100像素的位置。另一种是按比例计算,屏幕从左到右为[0,1],从上到下也是[0,1],对于选择屏幕中心点比较方便,均使用(0.5,0.5)即可,具体参数可以构造函数中进行旋转;SDK中通过setParticleShapeModule设置发射区域,SinglePointParticleShape为指定点发射 RectParticleShape为区域发射

3、运行状态
    根据运行的时间去修改粒子的位置、方向、旋转角度、大小以及颜色

    图中对粒子生命周期内旋转角度和缩放进行了修改,左边仅修改了缩放,粒子会越来越大,右边同时修改了缩放和旋转,会旋转着变大,通过这两条可以实现很多特效。SDK中通过setParticleOverLifeModule设置运行过程中的状态变化,状态变化包含四种速度、颜色、旋转角度、缩放大小均可以在ParticleOverLifeModule中进行设置。

三、示例代码

  1. com.amap.api.maps.model.particle.ParticleOverlayOptions particleSystemOptions = new com.amap.api.maps.model.particle.ParticleOverlayOptions();
  2. particleSystemOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.heart280));

  3. int time = 10000;
  4. // 设置最大数量,持续时间,是否循环
  5. particleSystemOptions.setMaxParticles(100);
  6. particleSystemOptions.setDuration(time);
  7. particleSystemOptions.setLoop(true);

  8. // 设置每个粒子 存活时间,以及发射时的状态
  9. particleSystemOptions.setParticleLifeTime(time);
  10. particleSystemOptions.setParticleStartSpeed(new RandomVelocityBetweenTwoConstants(10, 10, 0, 100, 100, 0));

  11. // 设置发射率
  12. particleSystemOptions.setParticleEmissionModule(new com.amap.api.maps.model.particle.ParticleEmissionModule(10, 1000));

  13. // 设置发射位置
  14. particleSystemOptions.setParticleShapeModule(new com.amap.api.maps.model.particle.SinglePointParticleShape(0.1f, 0.1f, 0, true));

  15. // 设置每个粒子生命周期过程中状态变化,包含速度、旋转和颜色的变化
  16. com.amap.api.maps.model.particle.ParticleOverLifeModule particleOverLifeModule = new com.amap.api.maps.model.particle.ParticleOverLifeModule();
  17. particleOverLifeModule.setRotateOverLife(new com.amap.api.maps.model.particle.ConstantRotationOverLife(45));
  18. particleSystemOptions.setParticleOverLifeModule(particleOverLifeModule);

  19. particleSystemOptions.setParticleStartColor(new com.amap.api.maps.model.particle.RandomColorBetWeenTwoConstants(
  20.         225, 137, 134, 255,
  21.         198, 195, 42, 255));

  22. //修正一下比例, 默认都会被绘制成1像素,设置自己的宽高,需要乘上一个比例
  23. particleSystemOptions.setStartParticleSize(64, 64);

  24. ParticleOverlay particleOverlay = aMap.addParticleOverlay(particleSystemOptions);
复制代码

附录 粒子图层 属性介绍






系统状态
setDuration
整个粒子系统存活时间
setLoop
整个粒子系统是否循环
setMaxParticles
整个粒子系统的粒子最大数量
icon
整个粒子系统的粒子图标,会被转成1x1像素




初始状态
setStartParticleSize
每个粒子的初始大小,单位像素
setParticleLifeTime
每个粒子的存活时间
setParticleStartColor
每个粒子的初始颜色
setParticleStartSpeed
每个粒子的初始速度,单位像素/秒



运行状态-发射模式
setParticleEmissionModule
设置发射率,每个多少时间发射粒子数量,越多会越密集
setParticleShapeModule
设置发射模型,比如所有粒子从一个点出来,或者从某个区域出来

运行状态-生命周期
setParticleOverLifeModule
设置每个粒子生命周期过程中状态变化,包含速度、旋转和颜色的变化



覆盖物接口
zIndex
设置覆盖物层级
isVisibile
设置覆盖物是否展示
destroy
销毁覆盖物






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|高德开发者论坛

Copyright ©2014 高德开发者论坛.All Rights Reserved |京ICP证070711号

意见反馈 常见问题 服务条款 联系我们
快速回复 返回顶部 返回列表