# Particle2d **Repository Path**: giser123456789/particle2d ## Basic Information - **Project Name**: Particle2d - **Description**: kanzi 2d 粒子系统插件 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-18 - **Last Updated**: 2024-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一个kanzi插件,用来实现类似Cocos-2d游戏引擎的2D粒子,此外支持GPU加速和线程加速。 + [功能介绍](#功能介绍) + [功能概述](#功能概述) + [节点及属性参考](#节点及属性参考) + [使用步骤](#使用步骤) + [插件导入](#插件导入) + [GravityParticle2D](#gravityparticle2d) + [GPU粒子](#gpu粒子) + [CircularParticle2D](#circularparticle2d) + [粒子动画](#粒子动画) + [示例](#示例) + [火焰](#火焰) + [烟花](#烟花) + [星空](#星空) + [雨雪](#雨雪) + [流星](#流星) + [爆炸](#爆炸) + [轨迹](#轨迹) + [烟雾](#烟雾) + [魔法](#魔法) ## 功能介绍 ### 功能概述 Particle2D提供了两种类型的2D节点,根据粒子的计算方式分为重力2D粒子节点,圆周2D粒子节点,通过调节节点的发射器属性、运动属性、粒子属性和动画属性,可以制作几乎任何2D粒子效果, 如火、烟、爆炸、水流、旋转星系等粒子效果。可以选择3种粒子更新的计算类型:单线程模式、双线程模式、GPU模式和两种粒子渲染类型:点、矩形。使用者根据实际运行的硬件性能选择合适的更新器。将粒子渲染为点可以节省内存但不支持粒子的旋转。 ### 节点及属性参考 #### 节点 Particle2D插件包含两个自定义2D节点Gravity Particle 2D和 Circular Particle 2D。 #### 属性参考 属性名 | 属性描述 | 属性类型 | 属性分类 :---- | :----: | :----: | :----: Enable | 启用或禁用 | bool | Particle2D BlendMode | 正常、叠加 | Enum | Particle2D RenderType | 点、矩形 | Enum | Particle2D ProcessorType | 单线程、双线程、GPU | Enum | Particle2D EmitRange | 发射位置范围 | Vector2 | Emitter Position | 发射器位置 | Vector2 | Emitter Angle | 发射角度 | float | Emitter AngleVar | 发射角度随机偏移 | float | Emitter Duration | 次发射持续时间 | float | Emitter Looping | 是否循环发射 | bool | Emitter Speed | 每秒发射粒子数量 | float | Emitter Capacity | 粒子容量 | float | Emitter ParticleTexture | 粒子贴图 | Resource | Particle StartColor | 粒子初始颜色 | ColorRGBA | Particle StartColorVar | 粒子初始颜色随机变化量 | ColorRGBA | Particle EndColor | 粒子结束颜色 | ColorRGBA | Particle EndColorVar|粒子结束颜色随机变化量|ColorRGBA|Particle StartSize|粒子初始大小|float|Particle StartSizeVar|粒子初始大小随机变化量| float| Particle EndSize| 粒子结束大小| float| Particle EndSizeVar| 粒子结束大小随机变化量| float| Particle StartSpin| 粒子初始旋转| float| Particle StartSpinVar| 粒子初始旋转随机变化量| float| Particle EndSpin| 粒子结束旋转| float| Particle| EndSpinVar| 粒子结束旋转随机变化量| float| Particle Lifetime| 粒子寿命| float| Particle LifetimeVar| 粒子寿命随机变化量| float| Particle  | Gravity|  |  GravityXY| 重力加速度| Vector2| Motion InitialSpeed| 初始速度 |Vector2 |Motion AccelRad| 圆周加速度| float| Motion AccelRadVar| 圆周加速度随机变化量| float| Motion AccelTan| 切向加速度| float| Motion AccelTanVar| 切向加速度随机变化量| float| Motion  | Circular|  |  StartRadius| 圆周开始半径| float| Motion StartRadiusVar| 开始半径随机变化量| float| Motion EndRadius| 圆周结束半径| float| Motion EndRadiusVar| 结束半径随机变化量| float| Motion RotatePerSecond| 圆周运动角速度| float| Motion RotatePerSecondVar | 圆周运动角速度变化量| float| Motion AnimationTimeline| 动画时间线| Resource| Animation AnimSize| 尺寸动画开关| bool| Animation AnimSpin| 旋转动画开关| bool| Animation AnimAlpha| 透明度动画开关| bool| Animation Size| 尺寸| float| Animation Spin| 旋转| float| Animation Alpha| 透明度| float| Animation Note: 1.点渲染类型不支持旋转粒子 2.只有单线程模式支持粒子动画 3.GPU模式最低要求OpenGL ES版本为 3.0 4.Duration为0时连续不断的发射粒子 ## 使用步骤 ### 插件导入 导入Particle2D导入到Kanzi Studio ![Alt text](05.png?raw=true "") ![Alt text](06.png?raw=true "") ### GravityParticle2D *创建一个Gravity Particle 2D节点* ![Alt text](07.png?raw=true "") *Gravity Particle 2D的默认效果* ![Alt text](08.png?raw=true "") **调节属性参数制作一个喷泉效果** *设置Emitter属性* ![Alt text](09.png?raw=true "") *调节Particle属性* ![Alt text](10.png?raw=true "") ![Alt text](11.png?raw=true "") *调节Motion属性* ![Alt text](12.png?raw=true "") ### GPU粒子 *将粒子容量由3000设为5000,每秒发射数量由300设为1000.发现帧率由53降为31* ![Alt text](13.png?raw=true "") 调节ProcessorType由默认值SingleThread为GPU,帧率由31升到52 ![Alt text](14.png?raw=true "") #### CircularParticle2D *创建一个Circular Particle 2D节点* ![Alt text](15.png?raw=true "") *创建一个Circular Particle 2D的默认效果* ![Alt text](16.png?raw=true "") **调节属性参数制作一个银河效果** *设置Emitter属性* ![Alt text](17.png?raw=true "") *调节Particle属性* ![Alt text](18.png?raw=true "") ![Alt text](19.png?raw=true "") *调节Motion属性* ![Alt text](20.png?raw=true "") #### 粒子动画 *创建动画时间线资源,这里使用尺寸动画属性,动画时间大致与粒子寿命接近。* ![Alt text](21.png?raw=true "") *设置粒子节点的Animation Timeline属性为刚才创建的时间线动画,并打开尺寸动画通道。* ![Alt text](22.png?raw=true "") ### 示例 #### 火焰 ![Alt text](火焰1.png?raw=true "") ![Alt text](火焰2.png?raw=true "") ![Alt text](火焰3.png?raw=true "") #### 烟花 ![Alt text](烟花1.png?raw=true "") ![Alt text](烟花2.png?raw=true "") #### 星空 ![Alt text](星空.png?raw=true "") #### 雨雪 ![Alt text](雨雪1.png?raw=true "") ![Alt text](雨雪2.png?raw=true "") #### 流星 ![Alt text](流星1.png?raw=true "") ![Alt text](流星2.png?raw=true "") #### 爆炸 ![Alt text](爆炸.png?raw=true "") #### 轨迹 ![Alt text](轨迹.png?raw=true "") #### 烟雾 ![Alt text](烟雾1.png?raw=true "") ![Alt text](烟雾2.png?raw=true "") #### 魔法 ![Alt text](魔法1.png?raw=true "") ![Alt text](魔法2.png?raw=true "")