3D游戏编程与设计作业八

粒子光环

  • 作业要求:参考 http://i-remember.fr/en 这类网站,使用粒子流编程控制制作一些效果, 如“粒子光环”

制作过程

  1. 新建一个粒子系统对象:Create->Effects->Particle System

  2. 对粒子系统属性面板进行参数设置,如下图:
    3D游戏编程与设计作业八

    这里,对其中属性做一下简单解释,如下:

  • Duration:发射器发送粒子持续的时间。比如设置为5,就是5秒后不再发送新的粒子

  • Looping:循环发射粒子,如果勾选了Looping,Duration就相当于无穷大

  • Prewarm:在Looping勾选之后才能使用,意思是发射粒子时不是从0开始

  • Start Delay:发射延迟时间,暂停x秒后开始发射粒子

  • Start Lifetime:粒子的生命周期,有Constant,Curve,Random Between Two Constants和Randow Between Two Curves四种类型可以选择,作业中只实践了常数

  • Start Speed:初始速度,粒子被创建时具有的速度,也可以有上面提到的四种类型

  • Start Size:初始大小,类似Speed

  • 3D StartRotation:需要往一个方向旋转粒子时候使用

  • Start Rotation:粒子初始旋转

  • RandomizeRotation:随机旋转粒子方向

  • Start Color:初始颜色

  • Gravity Modifier:修正重力

  • Simulation Space:发射坐标,Local是默认的,也可以选择World或者Custom。选择Local,粒子属于本地粒子发射器;选择World,移动粒子发射器,已经发射的粒子不会随着发射器移动;选择Custom,粒子跟着指定的物体移动

  • Simulation Speed:模拟Update

  • Delta Time

  • Scaling Mode:三种选择,Local:忽略父级的缩放;Hierarchy:跟随父级缩放;Shape:跟随初始位置

  • Play On Awake:是否Awake时就播放

  • Emitter Velocity

  • Max Particles:一个duration内最多发射的粒子数目

  • Auto Random Seed:随机种子

  • Rate over Time:单位时间生成粒子的数量

  • Rate over Distance:随着距离增加而产生的粒子数量

  • Time:从第几秒开始

  • Count:粒子数目

  • Cycles:在一个周期中循环的次数

  • Interval:两次两次Cycles的间隔时间。
    由于图片长度问题,上一张图片未能展示出所有改动的相关属性,其中renderer组件的参数设置及部分属性解释如下:
    3D游戏编程与设计作业八

    • Billboard:粒子总是面对相机。
    • StretchedBillboard:可以根据相机,速度,长度来调节粒子的缩放。
    • HorizontalBillboard:粒子平面平行于Floor平面,即粒子都是水平朝向
    • VerticalBillboard:粒子平面平行于世界坐标的Y轴,但是面向相机,粒子都是竖直朝向
    • Mesh:将粒子渲染到网格上去,这个会和Texture Sheet Animation发生冲突
    • Custom Vertex Streams:在材质的顶点着色器中配置哪些粒子属性可用
    • Receive Shadows:规定阴影是否可以投射到粒子上,只有Opaque(不透明)的材质可以接受阴影
  1. 用代码控制粒子的生成和运动
    这里参照了 http://www.manew.com/thread-47123-1-1.html(文章源代码:https://github.com/RafalWilinski/Particle-Sea )中的方法。3D游戏编程与设计作业八
  2. 通过正态分布生成粒子运动半径,通过极坐标的方式确定位置,在Update里让粒子旋转
    3D游戏编程与设计作业八
    这里,为了使所有粒子整体运动看起来比较自然,我创建了三个粒子系统并标号,分别设置属性参数后都将HaloController.cs挂上去,使粒子的运动速度、半径等与其序号有关。
    3D游戏编程与设计作业八
    Halo1
    3D游戏编程与设计作业八
    Halo2
    3D游戏编程与设计作业八
    Halo3
    3D游戏编程与设计作业八

效果演示视频
代码传送门