[原]Unity3D深入浅出 - 粒子系统(Particle System)

粒子系统是在三维控件渲染出来的二维图像,主要用于烟,火,水滴,落叶等效果。一个粒子系统由例子发射器、粒子动画器和粒子渲染器三个独立的部分组成。

Unity中自带了一些粒子效果,在Assets>ImportPackage>Particles,即可将Prticles.UnityPackage导入到项目中,这些粒子效果包括:Dust(沙尘)、Fire(火焰)、Water(水)、Smoke(烟雾)、Sparkles(闪光),还有一些粒子资源 Sources、Misc(杂项),如下图

随便拖出来几个

接下来讲一下Unity3d中的旧版粒子系统:

先创建一个Empty的GameObject,为其添加下图的五个组件

1.Ellpsoed Particle:椭球粒子发射器,可在一个星球范围内生成大量的粒子,可痛过Ellipsoid属性对其缩放和拉伸。

  • Emit:粒子发射,开启该项,发射器将发射粒子
  • Min/Max  Size:生成的每颗粒子的最小/大尺寸
  • Min/Max Energy:每颗粒子的最小/大生命周期(以秒为单位)
  • Min/Max Emission:每秒生成粒子的最小/大数目
  • World Velocity:粒子在世界坐标中沿xyz方向的初始速度
  • Local Velocity:局部速度,以某个对象为参照物,相对沿着xyz方向的初始速度。
  • Rnd Volocity: 随机速度
  • Emitter Velocity Scale:发射速度比例
  • Tangent Velocity:切线速度,粒子XYZ轴穿过发射器表面的初始速度。
  • Angular Velocity:角速度,新生粒子的角速度,单位(°/s)
  • Rnd Angular Velocity:随机角速度
  • Rnd Rotation :随机旋转,启用后粒子会以随机的方向生成。
  • Simulate in World space:在世界坐标空间中更新粒子运动。如果关闭该项,则每一个单独粒子的位置总是随着发射器的位置变化而发生相对的运动;若开启该项,粒子不会受到发射器运动的影响。比如一个上升的火球,火焰会在产生后向上漂浮并距离火球的距离越来越远,如果关闭此项,那么这些相同的火焰是会随着火球而在屏幕上移动的。
  • One Shot:单次发射,将在Emission属性内一次性地生成所有的粒子,然后停止发射,启用该属性可用于爆炸,水花四溅,魔法效果;关闭该属性,枪管的烟,风,瀑布等效果。
  • Ellipsoid:椭球,根据XYZ轴设置粒子的生成范围。
  • Min Emitter Range:最小发射器的范围

细节说明:椭球粒子发射器是最基本的粒子发射器,添加到场景后,可以定义成才粒子的边界并给出粒子的初始速度。使用Particle Animator(粒子动画器)可以操纵粒子随时间不断的变化出想要的效果。

当时图表现不同的粒子时,可分别调整Size,Energy,Emission以及Velocity属性。例如小的Size可以模拟萤火虫或者天空中的星星,Energy和Emission属性可以控制粒子在屏幕中保留多超时间以及一次可以生成多少颗粒子。Velocity属性控制粒子的运动,可以通过脚本改变Velocity的值模拟不同的粒子效果。如果想模拟风,可设定Velocity属性的X和Z值。

注意:要谨慎使用大量粒子效果,粒子数量越多对硬件设备的要求就越高。所以尽量用最少的粒子来实现需要的效果。

Emit属性要与粒子动画器中的AudoDestruct(自动销毁)属性相结合使用。通过脚本可以使发射器停止发射粒子,然后自动销毁功能会自动销毁粒子系统以及它所绑定的游戏对象。

2.Mesh Particle Emitter:网格粒子发射器,在一个网格周围发射粒子,粒子从网格的表面开始生成。(部分属性同椭球粒子发射器一样)

  • Interpolate Triangles:插值三角形。开启该项粒子会在网格的表面生成;关闭该项粒子则会在网格的顶点处生成。
  • Systematic:系统性,粒子会按照网格定义好的顶点顺序来生成。
  • Min/Max Normal Velocity:最小/大法线速度,从网格抛出粒子的最小/大数量。
  • Mesh:网格,可单机圆圈按钮Select Mesh,选择不同的网格,不同的网格,粒子的发射的初始形态就不同。

细节说明:当需要更精确的控制粒子生成的位置以及方向时,网格粒子发射器会比椭球发射器更加简单,它可用来创造更高级的效果。网格粒子发射器通过附加在网格上的顶点来发射粒子,因此网格区域的多边形越密集,粒子的发射也就越密集。

3.Particle Animator:粒子动画器使粒子随着时间而运动,可对粒子系统添加风,拖放和颜色循环等效果,下面介绍属性。

  • Does Animation Color:使用颜色的动画,开启后粒子在其生命周期内会循环变化颜色。
  • Color Animation:颜色动画,可定义五种颜色,使所有的粒子循环使用这些颜色。
  • World Rotation Axis:是粒子围绕世界坐标局部旋转,可用来创造高阶的法术效果。
  • Local Rotation Axis:局部旋转轴,粒子围绕着局部坐标来旋转。
  • Size Grow:粒子会随着时间变化而变大。
  • Rnd Force:随机外力,每一帧都随机施加一个外力。
  • Force:外力,每一帧都给粒子施加外力。
  • Damping:阻尼,每一帧有多少粒子的速度会减慢,当值设为1时没有阻尼,因此粒子的速度不会减慢。
  • Autodestruct:自动销毁,启用该向后,则所有消失的粒子在销毁时同时销毁为其绑定的游戏对象。

细节说明:

  Rotation Axes:旋转轴,不管是设置局部还是世界坐标旋转轴,都会使粒子围绕其指定的轴旋转。数值越大旋转越快。旋转轴设置为局部的时候是改变的Transform组件的Rotation属性;设置为世界坐标旋转时粒子的旋转轴始终不变。

  Forces&Damping:外力和阻尼,利用外力可时一个粒子在方向上产生加速。阻尼可在粒子不改变方向的情况下使其加速或者减速,值为1表示没有阻尼,粒子不会加速或减速;值为0表示粒子会立即停止;值为2表示每秒粒子的速度都会加倍。

  Destorying GameObjects attached to Particles:销毁绑定到粒子的对象。

比如一个油桶爆炸的效果;可将一个Emit属性被禁用的爆炸粒子效果附加到油桶上,同时开启这个爆炸粒子的Autodestruct属性。在发生碰撞时开启Emitter属性(即开启粒子发射器播放爆炸效果),在发生爆炸效果后油桶会随着粒子的生命周期一并销毁。

4.World Particle Collider:世界坐标粒子碰撞器,可以使得粒子与场景中其他的碰撞体发生碰撞。

  • Bounce Foctor:弹性系数。粒子与其他对象发生碰撞时会使其加速或减速,该属性与粒子动画器的组件的Damping(阻尼)属性相类似。
  • Collision Energy Loss:碰撞活力损失,当发生碰撞时粒子每秒损失的活力总和,小于0时粒子销毁。
  • Collides with:碰撞对象,决定粒子与哪一个层级发生碰撞。
  • Send Collision Message:发生碰撞消息,开启该项后,每个粒子都会发送一个碰撞消息,可痛过脚本捕获到该消息。
  • Min Kill Velocity:最小消灭速度,如果一个粒子因为碰撞而使速度降到最小消灭速度,它将被销毁。

细节说明:Message:发送消息,若开启Send Collision Message,则在碰撞中任何粒子都会发送消息OnParticleCollision到粒子绑定的对象和与粒子相碰撞的对象。

注意:Send Collision Message可用作模拟子弹和冲击伤害,当有许多粒子时碰撞检测会变得缓慢,因此要适当地使用粒子碰撞,消息发送会占用大量的消耗,因此尽量不要将其用在粒子系统中。

5.Particle Renderer:粒子渲染器,可将粒子渲染到屏幕上,没有粒子渲染器就看不到粒子效果。

  • Cast Shadows:开启该项,粒子可产生阴影。
  • Receive Shadows:开启该项,粒子可接收阴影。
  • Materials:可将指定的材质显示到每个粒子的位置,可调整Size参数来添加粒子类型。
  • Use Light Probes:使用光线探测,开启后则烘培过的光线探测可显示在场景中,它是一个插值光线探测。
  • Light Probe Anchor:光线探测探测锚点,开启后渲染器会通过Transform组件的位置来寻找插值光线探测。
  • Camera Velocity Scale:相机速度比例,应用到基于相机运动的粒子的延伸总量。
  • Stretch Particle:粒子伸展,该属性决定了粒子的渲染方式。
    • Billboard:公告板,粒子被渲染为面向Camera的方向。
    • Sorted Billboard:分类公告板,粒子按照深度进行分类,使用混合材质时用到该项。
    • Stretched:伸展,粒子面向其正在运动的方向。
    • Horizontal Billboard:水平公告板,所有粒子沿着XY轴平面对齐。
    • Vertical Billboard:垂直公告板,所有粒子沿着XZ轴的平面对齐。
  • Length Scale:长度比例,如果Stretch Particles设置为伸展,那么此值可以决定粒子在其运动方向上的长度。
  • Velocity Scale:速度比例
  • Max Particle Size:最大粒子大小,决定在屏幕上显示粒子的大小,1覆盖整个视图,0.5覆盖一半的视图。
  • UV Animation :UV动画如果有一项被设置,则通过使用平铺文理来生成粒子的UV坐标。

    • X Tile:X轴向上的平铺数。
    • Y Tile:Y轴向上的平铺数。
    • Cycles:动画序列循环的次数。

细节说明:

1.选择材质,当建立一个粒子渲染器时,使用适当的材质及可双面渲染材质着色器是非常重要的,大部分时候所要使用的材质都有一个内置的粒子着色器。

2.扭曲粒子,默认情况下粒子会议Billboarded的方式进行渲染,这对于表现烟雾,爆炸等会有很好的效果。粒子可以任何速度向然和方向伸展,这对于火化,闪电,光束的效果非常有用。

3.动画纹理,粒子系统可通过一个动画平铺贴图来渲染。要使用此功能应保持在图像的节点之外。当粒子按其生命周期去循环时,也会连同图像一起进行循环。这对于给粒子增加更多的生命周期或者制作小的旋转碎片非常有用。

对粒子系统就介绍到这里,自己可以尝试做一个爆炸效果,或者下雨,下雪等效果。

[原]Unity3D深入浅出 - 粒子系统(Particle System)

时间: 2024-10-22 13:29:03

[原]Unity3D深入浅出 - 粒子系统(Particle System)的相关文章

[原]Unity3D深入浅出 - 粒子系统

粒子系统是在三维控件渲染出来的二维图像,主要用于烟,火,水滴,落叶等效果.一个粒子系统由例子发射器.粒子动画器和粒子渲染器三个独立的部分组成. Unity中自带了一些粒子效果,在Assets>ImportPackage>Particles,即可将Prticles.UnityPackage导入到项目中,这些粒子效果包括:Dust(沙尘).Fire(火焰).Water(水).Smoke(烟雾).Sparkles(闪光),还有一些粒子资源 Sources.Misc(杂项),如下图 随便拖出来几个 [

[原]Unity3D深入浅出 - 认识开发环境中的GameObject菜单栏

Create Empty:创建空对象 Create Other:创建其他对象 Particle System:创建粒子系统 Camera:创建相机 GUI Text:GUI文本 GUI Texture:创建GUI贴图 3D Text:创建3D文本 Directional Light 方向光(太阳光) Point Light 点光源(灯泡) Spot Light 聚光灯(手电筒) Area Light  Pro版才有 只能用来烘培Lightmap Cube:创建正方体 Sphere:创建球体 Ca

[原]Unity3D深入浅出 - 认识开发环境中的Component(组件)菜单

Component(组件)是用来添加到GameObject对象上的一组相关属性,本质上每个组件都是一个实例,比如在Cube上添加一个Mesh网格,即面向对象的思维方式可以理解成Cube对象里包含了一个Mesh对象. Component主要包含以下组件:  Mesh:添加网格类型的组件 Mesh Filter:网格过滤器 Text Mesh:文本网格 Mesh Renderer:网格渲染器 Effects:添加特效类型组件 Particle System:粒子系统 Trail Renderer:拖

[原]Unity3D深入浅出 - 摄像机组件(Camera)

在Unity中创建一个Caaera后,除了默认带一个Transform组件外,还会附带Flare Layer.GUI Layer.Audio Listener等4个组件,如下图. ClearFlags:清除标记:决定屏幕中哪部分被清除.一般用于多台摄像机来描绘不同对象的情况,有一下三种模式. Skybox:天空盒(默认项).在屏幕空白处显示当前摄像机的天空盒,如果没有指定天空盒,则会显示默认背景色. Solid Color:如果没有设置天空盒,将默认显示此处设置的背景色. Depth only:

[原]Unity3D深入浅出 - 认识开发环境中的Layers面板

Layers(分层)下拉列表:用来控制Scene视图中游戏对象的显示,在下拉菜单中为勾选状态的物体将显示在Scene视图中. Everything:显示所有的游戏对象 Nothing:不显示任何游戏对象 Default:显示没有任何控制的游戏对象 TransparentFX:显示透明的游戏对象 Igonore Raycast:显示不处理投射事件的游戏对象 Water:显示水对象 EditLayers:编辑层 尊重他人劳动成功,转载请注明出处:http://www.cnblogs.com/tong

[原]Unity3D深入浅出 - 认识开发环境中的RenderSettings面板

Fog:在Scene中开启雾效果 Fog Color:雾的颜色 Fog Mode:雾效果的模式,Linear(线性雾效果) Exponential(均匀分布的雾效果)  Exp2(越远越看不清楚)三种类型 Fog Density:雾效果的密度 Linear For Start:雾的起始距离 Linear For End:雾的结束距离 Ambient Light:环境光设置 Scybox Material:天空盒材质 Halo Strength:光晕的强度 Flare Strength:耀斑强度

[原]Unity3D深入浅出 - 光源组件(Light)

Unity中提供了四种光源: Directional light: 方向光,类似太阳的日照效果. Point light: 点光源,类似蜡烛. Spotlight: 聚光灯,类似手电筒. Area Light:区域光,无法用作实时光照,一般用于光照贴图烘培. 接下来介绍光源的参数:如下图 Type:可以选择以上介绍的四种光源类型 Range:设置光源范围的大小,从光源对象的中心发射的距离.只有Point和Spotlight有该参数. Color:光源的颜色 Instensity:光源的强度 Co

[原]Unity3D深入浅出 - 认识开发环境中的Project面板

前面几个是用来创建脚步的,从Prefab说起: Prefab:预设物体,若一个Object在Scene中多处用到,即可选择为改对象创建一个Prefab.创建一个Prefab后,将源Object拖拽置新建的Prefab下,即可在场景中多处使用,且在修改任意一处,Apply后即可修改所有的形态. Material:材质,可自己设定贴图等. Animation:可新建一个动画剪辑 Cubemap:立方体贴图 Lens Flare:可用来模拟太阳光晕效果,可拖置光源的Flare属性下. Custom F

[原]Unity3D深入浅出 - 认识开发环境中的自带的Package资源包

Character Controller:角色控制器 Glass Refraction(pro only):玻璃反射资源包 Image Effects :图像效果资源包 Light Cookies:光效资源包 Light Flares:光晕资源包 Particles:粒子效果资源包 Physic Materials:物理材质资源包 Projectors:幻灯机效果资源包 Scripts:脚本资源包 Skyboxes:天空盒资源包 Standard Assets(Mobile):标准资源包 Ter