2017-06-04 09:39:18 six_sex 阅读数 24431

一个简单的爆炸效果的实现。

先看效果。
爆炸效果

一、准备四张贴图,做成材质
这里写图片描述

这里写图片描述
二、新建一个Particle System
1. 设置形状
这里写图片描述
2.
这里写图片描述
3.
这里写图片描述
4.
这里写图片描述
5.
这里写图片描述
6.
这里写图片描述
7.
这里写图片描述
8. 曲线的第二个点往上提一点点
这里写图片描述
9.
这里写图片描述
10.
这里写图片描述
11.
这里写图片描述
目前效果像这样

这里写图片描述
三、在当前粒子下面在新建一个粒子系统
1.取消looping
这里写图片描述
2.
这里写图片描述
3.
这里写图片描述
4.
这里写图片描述
5.
这里写图片描述
6.
这里写图片描述
7.
这里写图片描述

这里写图片描述

8.
这里写图片描述
9.
这里写图片描述
10.
这里写图片描述
11. 打开子发射器
这里写图片描述
12.选中子发射器修改参数
这里写图片描述
12.1
这里写图片描述
12.2
这里写图片描述
12.3
这里写图片描述
12.4
这里写图片描述
12.5
这里写图片描述
12.6
这里写图片描述
12.7
这里写图片描述
目前为止效果大概是这样的:
这里写图片描述
13.回到上一层发射器
这里写图片描述
13.1给他们改个名字
这里写图片描述
13.2修改“黑色碎片”的参数
这里写图片描述
14.选中“爆炸火花”给他再添加一个粒子系统,改个名
这里写图片描述
14.1
这里写图片描述
14.2
这里写图片描述
14.3
这里写图片描述
14.4
这里写图片描述

15.选中“爆炸火花”给他再添加一个粒子系统,改个名
这里写图片描述
15.1
这里写图片描述
15.2
这里写图片描述
15.3
这里写图片描述
15.4
这里写图片描述
15.5
这里写图片描述
15.6
这里写图片描述
15.7

这里写图片描述
16.1选中“爆炸”(原名爆炸火花,最外层的粒子系统) 改变时长
这里写图片描述

16.2最后把他们所有的looping(循环)给关掉

效果是这样的

这里写图片描述

感谢收看,再见!
2017年6月4日09:37:43

对了,package在这
链接: https://pan.baidu.com/s/1boJrp1t 密码: v9ku

2015-03-13 18:42:31 a3636987 阅读数 14539

经过测试学习,总结了关于怎么让粒子和物体发生碰撞和怎么让粒子在碰撞后消失的几点看法:

首先给大家看一下我的粒子系统的配置图:


关于碰撞检测的主要配置我们看图中的Collision:

第一项:因为是一个3D游戏,所以这里我选择的是World

第二项(Dampen):抑制(0~1),选这个为1时(完全抑制),碰撞之后,阻止了粒子,可以使碰撞的粒子消失

第三项(Bounce):反弹(0~2),选完这个之后,可以让产生碰撞的粒子以某个角度反弹出去

第三项(Lifetime Loss):生命周期损失(0~1),碰撞之后让粒子损失百分比的生命周期,为1时(生命周期完全损失),可以使粒子消失

第四项(Min Kill Speed):最小清除速度,设置值越大,粒子发生碰撞之后被移除的速度越快,当达到某个值之后,可以近似碰撞之后立即消失

第五项(Collides With):可碰撞范围,设置可以与该粒子系统碰撞的层

第六项(Collision Quality):碰撞质量,设置发生碰撞的碰撞概率大小,选项三项从上到下由高到低,越低碰撞到的概率就越低

第七项(Send Collision Messages):发送碰撞信息,与下面这个方法有关

// 需要处理的碰撞信息,放在被撞的物体身上
void OnParticleCollision(GameObject other) {
      
}

总结一下以上可以使粒子消失的方法有以下三种:

(1)设置Dampen为1;

(2)设置Lifetime Loss为1;

(3)设置较大的Min Kill Speed值


以上是我对粒子碰撞的看法,不知道有没有错的地方,如果有错的地方欢迎指正,谢谢!

转载请指明出处:http://blog.csdn.net/hongyouwei/article/details/44244055


2016-03-08 23:41:42 u010930289 阅读数 6086

这部分解释了如何实现粒子系统的普遍类型。文档中所有的代码,你都可以免费使用于任何目的。

一个简单的爆炸

你可以用一个粒子系统来创造出一个逼真的爆炸,但动态效果在一开始可能看起来会更混乱。精髓之处在于,一个爆炸只是粒子群的向外爆发;但你可以做一些调整,让它看起来更真实。
一个正在开发的爆炸

粒子的时间线

一个简单的爆炸,产生一个向所有方向飞速扩散的球形火焰。初始的爆发拥有大量能量,因此非常炽热(即,明亮),并极快地移动。能量会迅速消散,让火焰的扩散减缓并冷却(即,变得不如原来那样明亮)。最后,随着所有能量燃烧殆尽,火焰停止,很快完全消失。
一个爆炸粒子通常只有短暂的生命期,你可以改动一些生命期的设置来模拟这一效果。粒子在开始应非常快地离开爆炸中心,但随着远离,它的速度应大幅降低。同时,颜色应从一开始为明亮的,之后变暗,最后褪色到透明。最后,在粒子的生命期内降低它的尺寸,会形成火焰随着燃料耗尽而分散的效果。

实现

从默认的粒子系统对象开始(菜单:GameObect->Create General->Particle System),进入Shape模块,设置发射器的形状为一个小的球体,比如半径为0.5个单位。标准资源库中的粒子包含了一个名为Fire Add 的材质,很适合用于爆炸(菜单:Assets->Import Package->Particles)。你可以将用于粒子系统的材质设置为使用Renderer模块。随着Renderer开启,你应同时关闭Cast Shadows(制造阴影)和Recieve Shadows(接受阴影),因为爆炸火焰应该是发出光而非接收光。
这一步,这粒子系统看起来像有许多小的火球被从一个中心点扔出来。爆炸当然应该同时产生大量粒子的爆发。在Emission模块,你可以设置Rate值为0,并在时间点0处添加单个粒子的Burst。爆发的粒子数量依赖于你所希望的爆炸强度,但50个粒子是个不错的开始。随着爆发设置完成,这个爆炸比之前像多了,但它相当地慢,并且火焰看起来耽搁很久。在Particle System模块中(与游戏对象会有相同的名字,例如“Explosion”),设置系统中粒子的Duration和Start Lifetime为两秒。
你也可以使用Size Voer Lifetime模块来创造“火焰耗尽燃料”的效果。将尺寸曲线设置为使用“ramp down”(即,尺寸从100%开始,降低至0)。为了让火焰黯淡、褪色,启用 Color Over Lifetime模块,并设置梯度从左边的白色开始,到右边的黑色结束。由于Fire Add材质使用附加的着色器来渲染,颜色属性的黯淡也控制了粒子的透明度;火焰的透明度会变得完全透明,随着颜色褪至黑。并且,当一个粒子被绘制在另一个之上时,附带的材质允许粒子的亮度“相加”。这进一步加强了在爆炸起始所有粒子相互间都很接近时,那刺眼夺目的效果。
按照现在的情况,爆炸正在成型,但它看着像是在外太空发生的。粒子在褪色之前,以不变的速度向外逸散,移动相当长的距离。如果你的游戏设定是在太空中,这大概是你想要的准确效果。然而,在大气层内发生的爆炸会被周围的空气所减速并抑制。开启Limit Velocity Over Lifetime模块,设置Speed为3.0,Dampen fraction 为0.4;你应该会看到爆炸随着进程而减少强度。
最后要注意的是,随着粒子从爆炸中心离开,它们个体的形状变得更容易辨认。特别地,相同尺寸、相同旋转的粒子让这个情况更明显,相同的图像被重复用于每个粒子。避免这一情况的一个简单办法,是在粒子生成时,对尺寸和旋转进行随机的变动。在Particle System模块中检视器的顶部,点击Start Size和Start Rotation属性的右向小箭头,都设置为Between Two Constants(在两个常数间随机)。对于尺寸,设置值在0.5到1.5,来产生一些变化,而没有出现太多巨大或微小粒子的风险。现在应该会看到,粒子图像的重复现象少多了。

用法

在测试时,将Looping属性开启,有助于重复地观看爆炸;但在最终的游戏里,应该将它关掉,让爆炸仅发生一次。当爆炸是为有爆炸可能的对象(比如油箱)而设计时,可能希望将粒子系统组件添加到对象上,并让Play On Awake属性关闭。之后可以在脚本中于必要之时启动爆炸。
void Explode() {
var exp = GetComponent();
exp.Play();
Destroy(gameObject, exp.duration);
}
在其它情况下,爆炸发生在撞击产生的位置。如果爆炸来自于一个物体(例如,一颗手榴弹)那么你可以在一个延时之后、或当它碰撞到目标后,调用上方所示的Explode函数。

// Grenade explodes after a time delay.
public float fuseTime;

void Start() {
    Invoke("Explode", fuseTime);
}

// Grenade explodes on impact.
void OnCollisionEnter(Collision coll) {
    Explode();
}

对于游戏里不被实际表现的物体(例如,一个运动速度太快而无法被看到的抛射体)所产生的爆炸,可以仅仅在合适的位置实例化一个爆炸。可以从例如光线照射的结果,来决定(爆炸)接触点(从而在接触点实例化爆炸)。

// On the explosion object.
    void Start() {
        var exp = GetComponent<ParticleSystem>();
        exp.Play();
        Destroy(gameObject, exp.duration);
    }

// Possible projectile script.
public GameObject explosionPrefab;

void Update() {
    RaycastHit hit;

    if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit)) {
        Instantiate (explosionPrefab, hit.point, Quaternion.identity);
    }
}

更深入的想法

这里开发的爆炸很基础,但可以修改它的很多部分,来达到在游戏中所希望看到的实际效果。
你使用的粒子图像将对玩家如何“阅读”爆炸产生很大的影响。小型的粒子多,那么分散可见的火星一边燃烧一边逸散。不会完全分散开的更大粒子更像是个被毁坏的油箱产生的火球。尤其是,将需要一并改变部分属性来完成效果。例如,火球会坚挺更久,并且在它消失前会扩张得更少;而一个猛烈的爆炸会将燃烧的部分撒布到相当远的距离外。
这里有一些属性用随机值设置,但其它大量属性有“在两个常数/曲线之间随机”的选项,可以使用这些来增加各种各样的变化。改变尺寸和旋转来避免明显的粒子雷同效果;考虑在Start Delay、Start Speed 属性增加一些随机。少量的变化有助于加强爆炸的效果显得更“自然”及难以预料,而不是有控制的机械过程。更大量的变化导致一个“脏(dirty)”爆炸。例如,改变Start Delay将产生一个不猛烈但更慢的爆炸,可能是因为车辆里的油箱是被分别点燃的。

车的尾气

轿车和许多其它类型的车辆在将燃料转化为动力时,会排除尾气。可以用粒子系统来增加一个排气为车辆增加漂亮的最后一笔。
An exhaust generated by a particle system

粒子的时间线

尾气从排气管飞快地出现,但随后接触空气后迅速减缓。随着缓慢,尾气扩散,变得模糊,很快消散在空气中。由于尾气是热的,在它经过周围的冷空气时,也有轻微的上升。
尾气粒子初始时,直径不应大过排气管;但在短暂的生命期里可以在尺寸上有合理的增长。通常初始时有一些透明,随着与空气混合褪至完全透明。考虑到动态性,粒子会被非常快地发射,但之后迅速减缓,并且轻微地上升。

实现

在Shape模块,选择圆锥形状并将Angle属性设置为0;这里的“圆锥”将实际上作为一个圆柱形的排气管。排气管的半径理应取决于车辆的尺寸,但通常可以通过匹配场景视角中的车辆模型来设置(例如,一个轿车模型的背后通常会有一个你可以匹配尺寸的排气管)。关于你选择的属性设置,半径实际上决定了相当多,比如粒子的大小和发射速率。处于本例的目标,我们假设车辆是个小轿车,在Unity世界坐标下的标准尺寸为1米,排气管的半径则是0.05或者说是5厘米。
对烟雾粒子,一个适合的图像是在标准资源库中提供的Smoke4材质。如果尚未拥有,从菜单中的Assets->Import Package->Particles导入。然后,转至粒子系统的Renderer模块,设置材质属性为Smoke4。
默认的5秒生命期通常对于车辆尾气来说太长了,所以应当打开粒子系统模块(与游戏对象有相同的名字,例如,“Exhaust”)并设置Start Lifetime为2.5秒。同样也在这个模块里,设置Simulation Space to World和Gravity Modifier 为小的负值,比如-0.1。使用世界模拟空间能让烟雾垂悬在它产生的地方,哪怕车辆在移动。负的重力影响引起烟雾粒子上升,仿佛他们是由热气组成的。一个很棒的额外效果是使用Start Rotation旁边的菜单箭头,选择在两个常数间随机的选项。分别设置两个值为0和360,烟雾粒子在被发射时会随机地旋转。许多一致对齐的粒子存在容易被察觉,减损本应是随机、无定型的烟迹。
在这一步,烟雾粒子开始看起来真实可信,默认的发射速率创造了引擎间歇性燃烧的“噗噗”效果。然而,烟雾还没有向外翻滚和消散。打开Color Over Lifetime模块,点击顶部在右边的梯度停止(这控制了颜色的“alpha”值透明度)。设置alpha值为0,可以看到烟雾粒子在场景中褪至无形。取决于引擎有多清洁,可能也希望降低开始时梯度的alpha值,黯淡的烟代表着脏、低效率的燃烧。
在褪至透明的同时,烟也应该随着逸散而在尺寸上增加,可以在Size Over Lifetime模块中很容易地创造出这个效果。打开这个模块,选择曲线,滑动曲线块到左边,使粒子以完整尺寸的部分值开始。你选择的实际值取决于排气管的尺寸,但比排气管尺寸稍大一点点的值,会产生很棒的气体逸散效果。(用排气管的尺寸作为粒子的起始,意味着气体被排气管限制而保持形状,可是,气体当然没有既定的形状 呀 !)使用粒子系统在场景视图中的模拟来得到烟雾好的视觉效果。如果烟没有散播到你希望的足够远那种效果,可以在在粒子系统模块中增加Start Size。
最后,烟雾应当随着它散播而减速。让这发生的简单办法是Force Over Lifetime模块。打开这个模块,设置Space选项为本地,力的Z方向分量设置为一个负的值,标明粒子被这个力推向后方(系统沿着物体本地空间的Z轴正方向发射粒子)。大约为-0.75的值会表现得很好,如果其他参数也如之前建议那样的设置。

使用

可以将这个尾气粒子系统放在车辆对象的一个子物体下。对于简单的游戏,可以开启 Play On Awake和Looping属性,让系统运行起来。然而在大多数情况下,随着车辆移动,可能希望至少改变发射率。这首先是为了可靠性(即,引擎工作更卖力时,产生更多的烟),不过这也有助于阻止烟雾粒子随着车辆移动而分散。一辆飞速移动的车,而发射率太慢,将会产生明显的烟雾“喷出”效果,这相当不真实。
可以从脚本中轻松地改变发射率。如果在脚本中有个代表引擎转数或者车速的变量,可以简单地用一个常数乘以这个值,将结果赋予粒子系统的EmissionRate属性。
// C#

using UnityEngine;
using System.Collections;

public class PartScriptTestCS : MonoBehaviour {

    public float engineRevs;
    public float exhaustRate;

    ParticleSystem exhaust;


    void Start () {
        exhaust = GetComponent<ParticleSystem>();
    }


    void Update () {
        exhaust.emissionRate = engineRevs * exhaustRate;
    }

}



// JS

var engineRevs: float;
var exhaustRate: float;

var exhaust: ParticleSystem;


function Start() {
    exhaust = GetComponent.<ParticleSystem>();
}


function Update () {
    exhaust.emissionRate = engineRevs * exhaustRate;
}

更深入的想法

基本方案已然创建了一个逼真的车辆尾气。但你可能注意到了,你修改参数时,引擎的“特点”改变了。一个缺少调教、燃烧率低的引擎会不完全地燃烧燃料,导致浓密、黑漆漆的烟雾,在空气中挥之不去。这完美地契合了老旧农场拖拉机,但绝不适合高性能运动跑车。对于一个“清洁”的引擎,应当对生命期、不透明性和尺寸的上升,使用小的数值。对于一个“脏”的引擎,应当增加这些值,试试使用Emission模块的Bursts属性来产生引擎噼里啪啦的效果。

2014-08-11 00:01:05 qq617119142 阅读数 2139

Particles 粒子系統

遊戲中的火焰、煙霧、下雨、下雪、沙塵、爆炸效果,使用一般的動畫製作方式並不容易製作,透過 Unity 內建的粒子系統即可製作遊戲中所需的效果。

雖然 3ds Max、Maya 等軟體也內建粒子系統,並且擁有許多粒子系統的外掛程式,不過是無法匯入 Unity 使用的,您必須使用 Unity 的粒子系統來製作。

 Shado火焰與煙霧

 

建立粒子系統

點選功能表 [ GameObject > Create Other > Particle System ] 在場景中新增一個粒子發射器,選取此粒子發射器時,即可在 Game 遊戲檢視面板看到粒子發射的模擬效果,右下方的 Particle Effect 面板可控制播放速度與播放時間。


 

設定粒子屬性

粒子系統可製作許多不同的效果,但是新增的粒子發器只會向上發射白色的粒子。選取粒子發射器後,透過屬性檢視可以設定粒子的屬性。

Ellipsoid Particle Emitter 粒子發射器屬性。

Particle Animator 粒子動畫屬性 - 設定粒子的動態效果。

Particle Renderer 粒子著色屬性 - 設定粒子在遊戲中呈現的結果。

 

Duration 粒子發射的時間(請將 Looping 循環關閉,否則粒子仍將持續發射)

Looping 設定粒子是否持續發射,預設為開啟。

Prewarm 預熱模式

Start Delay 發射延遲,若設定為 5 ,遊戲開始後經過 5 秒的時間才開始發射粒子,預設值為 0 (無延遲)。

Start Lifetime 粒子的生命週期,若設定為 5 ,粒子發射後經過 5 秒的時間即消失。

Start Speed 粒子的初始速度

Start Size 粒子的初始大小

Start Rotation 粒子的旋轉

Start Color 粒子的初始顏色(Unity 允許粒子產生顏色隨著時間變化的效果,請參閱 Color over Lifetime 設定

Gravity Modifier 重力修改器,預設值 0 代表粒子不受重力影響而往上移動,數值增加時粒子發射後會向下掉。

Inherit Velocity

Simulation Space 模擬空間 ( Makes particle positions simulate in worldspace or local space. In local space they stay relative to the Transform.)

Play On Awake

Max Particles 最大粒子數量,當場景中的粒子達到此數量時,發射器會暫時停止發射粒子,直到部份的粒子消失後再開始發射。

 

說明:Unity 3.5 版提供了新的粒子系統,請注意以下的教學不適用於 Unity 3.4 與更早期的版本。

Emission 設定粒子的發射率。

Shape 設定粒子發射器的形狀,可選擇 Cone 圓錐形、Sphere 球形、HemiSphere 半球形、Box 方塊等,發射器的形狀會影響粒子的前進方向。


 

Cone 圓錐形發射器

設定 Angle 角度可控制粒子發射為集中或散射。

   
  Sphere 球形發射器
   
 

Box 方塊發射器

可設定粒子發射器長度、寬度、高度,適用於製作下雨、下雪… 等大範圍且均勻的粒子發射效果。

   
  Mesh 網面發射器
   

Velocity over Lifetime

 

Limit Velocity over Lifetime

 

Force over Lifetime 粒子生命週期的力場

Color over Lifetime 粒子生命週期的顏色變化

前面介紹的 Start Color 可以製作顏色隨機變化的粒子,但是單一粒子的顏色是固定的,並不會隨著時間發生變化。勾選 Color over Lifetime 並開啟 Gradient Editor 漸層編輯器,上面的控制粒子透明度、下面的控制粒子顏色。


Color by Speed 依速度設定粒子顏色

控制粒子的顏色隨著速度產生變化。先點選 Color 開啟漸層編輯器,設定代表顏色變化的漸層,可透過 Speed Range 設定速度的範圍。

 

Size over Lifetime 粒子生命週期的大小變化

控制粒子的大小隨著速度產生變化,可選擇固定大小、越來越大、越來越小。

 

Sub Emitters 子發射器


設定此粒子系統的子發射器,請勿選擇自身的 ParticleSystem ,否則會出現 Circular References Detected 的訊息。


 

Collision 粒子碰撞效果

Planes 碰撞平面,當粒子撞到此平面時會彈開。


 

Render Mode 粒子著色模式

Render Mode 設定粒子的著色模式

Material 設定粒子的材質,預設為 Default-Particle 。

Sort Mode 排序模式 None, By Distance, Youngest First, Oldest First

Cast Shadows 設定粒子是否產生陰影,預設為開啟。

Receive Shadows 設定粒子是否接受陰影,預設為開啟。

Max Particle Size 設定最大粒子的尺寸,預設值 0.5


設定粒子的著色模式,選擇 Mesh 可讓您將粒子置換為自訂的 3D 物件,用於模擬群體效果(例如傾巢而出的蜂群、大量弓箭射出的效果),並可指定 Mesh 的材質。請注意使用 Mesh 時可能因為系統處理大量多邊形而發生執行效能的問題,建議您執行遊戲測試進行確認(按播放按鈕並點選 Stats 按鈕檢視 Statistics 狀態),若是 Graphics 圖像效能低於 30 FPS 時,可能帶來遊戲畫面流暢度不佳的感受。

 

使用 Unity 內建的粒子效果

除了透過以上的步驟建立粒子系統,Unity 也提供了 20 種內建的粒子效果。從 Project 專案視窗展開 Particle System 資料夾,將您想使用的效果拖曳到場景即可,使用上相當方便,並可透過屬性檢視修改粒子效果的屬性。

 

Dust 沙塵

- Dust Storm 沙塵暴,讓您在遊戲場景中製作沙塵暴的效果。

 

Fire 火焰

- Fire 1 火。

- Flame 火焰。

 

Legacy Particles

- Explosion 爆炸。

- Large flames 大火焰。


- Small explosion 小爆炸。

- Small flames 小火焰。

- Sparks 火花。

 




Misc 雜項
Fireworks 製作在夜空施放的煙火。 Light Snow 製作飄雪的效果。

Soap Bubble 製作飄浮的肥皂泡泡。 Sparks 製作火花。

Smoke 煙霧
Detailed Smoke 製作細密的煙霧。 Fluffy Smoke 製作蓬鬆的煙霧。

Fluffy Smoke Large 製作蓬鬆的大範圍煙霧。 Smoke Trail 製作煙霧軌跡(飛彈的尾部煙霧)。

Sparkles

Sparkle Rising 製作上升的火花(提示特定物品或記錄點的位置)。


Water
Water Fountain 製作噴泉的景觀。 Water Surface Splash 製作瀑布或噴泉下方的水面飛濺效果。


WaterFall 製作瀑布的景觀


新功能! Unity 4.2 版的粒子碰撞

Unity 4.2 - Particle Collision callbacks

http://www.youtube.com/watch?v=mafqOj3bwgs

 

相關 Unity 外掛程式

Shuriken Magic Effect Pack

線上展示: http://dl.dropboxusercontent.com/u/6602349/SM_Demo/WebPlayer/WebPlayer.html

開發廠商: Kalamona

建議售價: US$35

0 whirlwindBase 龍捲風效果
1. thornStorm
2. sacredGround
3. demoEffect
4. deathExplosionBase
5. iceBlockBase
6. acidBreathBase
7. fireBallBase 火球效果
8. lightningBallBase
9. manaRitual
10. hitEffect1Base 碰撞效果
11. hitEffect2Base 碰撞效果
12. insectSwarmBase
13. miniHitEffectBase 碰撞效果
14. BloodEffect 濺血效果
15. LargeBloodEffect 濺血效果
......

 

Leaves Particle System 樹葉粒子系統

開發廠商: Unlick Software

建議售價: US$5

官方網站: http://chemicalbliss.com/wordpress/portfolio-items/leaves-particle-system/

功能介紹

使用 Leaves Particle System 可快速製作逼真的樹葉飄落效果,使用 Unity 3.5 版本內建的 Shuriken Particle Systems 手裡劍粒子系統,並可支援 Animated texture 動態紋理。

 

Ian's Fire Pack

若您覺得 Unity 內建的火焰粒子效果不夠真實,推薦您使用 Ian's Fire Pack 這套專門製作火焰效果外掛吧! 提供 5 種的火焰效果,讓玩家體會超真實的灼熱感!



转自http://www.3dcg.com.tw/Unity/htm/Unity_013.asp


2014-09-15 16:36:11 jiangyongyuan 阅读数 126

Unity3D学习笔记——组件之Effects(效果/特效)——Particle System(粒子系统) - 有情怀的人

Effects: 效果/特效。

Particle System: 粒子系统。可用于创建烟雾、气流、火焰、涟漪等效果。

在Unity3D 3.5版本之后退出了新的shuriken粒子系统: 

 

添加组件之后的效果: 

   

其中的Open Editor按钮可以打开粒子编辑器,用于编辑复杂的粒子效果。

由于shuriken粒子系统是模块化的管理方式,所以可以动态的添加模块:

1.初始化模块:此模块是效果组件固有的模块。

Duration:粒子发射器,发射粒子的时间。单位为S(秒)。

Looping:是否开启。如果开启了循环,Duration值只要大于最小值0.10即可。

Prewarm:是否开启预热。只有在开启的循环的时候,预热才有效果,粒子量相似发射了一个粒子周期。

Start Delay:预热延迟。游戏开始多长时间后,预热开启。单位为S。 

Start Lifetime:粒子从发射器出来,到消失的时间。单位为S。 

Start Speed:粒子发射的速度。

Start Size:粒子大小。

Start Rotation:粒子的旋转角度。

Start Color:粒子的颜色。

Gravity Multiplier:设置重力对粒子的影响,数值越大影响越大。

Inherit Velocity:速度继承。当粒子系统是运动的时候,粒子的速度会继承运动的速度。但粒子坐标系必须在世界坐标系。 

Simulation Space:坐标系是本身还是世界坐标系。

Play On Awake:在游戏开始播放,但不影响Start Delay效果。

Max Particles:粒子释放的最大数量,当达到最大数量时,停止释放粒子,当有粒子消失时继续释放。

2.Emission Module(粒子发射模块)用于粒子发射的速率。或是某个特定时间发射大量的粒子,用于模拟爆炸的效果。

每秒发射粒子数量。Bursts为某个时间点爆发出粒子的数量,这个时间必须在粒子Duration范围内。

每米发射粒子数量。粒子发射器所在的游戏对象,移动的时候每米发射的粒子,但粒子坐标系必须在世界坐标系。

3.Shape Model(形状控制模块):定义了粒子发射器的形状,位置及发射方向。

球形粒子发射器:

Radius:球形的半径。

Emit from Shell:是否从表面发射粒子,还是从内部发射。

Random Direction:是否启用随机速度。

半球发射器:

锥体发射器:

Angle:椎体,上边开口的大小。

Radius:半径的大小。 

Length:椎体的高度。只有当Emit from 值为Volume Shell或是Volume时可用。

Emit From:粒子发射的位置。

——————Base:粒子发射源在椎体的内部的底面上,由底面开始发射。

——————Base Shell:粒子发射源在椎体底面的边缘,就是周长那一圈发射。

——————Volume:粒子发射源在椎体内部空间。

——————Volume Shell:粒子发射器在椎体整个表面上。没有底面。

立方体发射器:

Box X:立方体长度。

网格发射器:

Mesh:选择网格样式。

——————Vertex:粒子将从网格顶点发射。

——————Edge:粒子将从网格边缘(棱)发射。

——————Triangle:粒子将从网格的三角面发射。图形都是三角形组成的。

4.生命周期速度模块:控制每一个粒子的速度。

5.生命周期速度限制模块:

Separate Axis:是否启用限制每一个轴。

Speed:限制的速度。

Dampen:阻尼。阻尼为1的时候表示在生命周期结束的时候,速度降到限定的速度。

6.生命周期作用力模块:控制每一个粒子在生命周期内受到力的情况。

Randomize: 只有在 Random Between Two Constants或Random Between Two Curves时才可启用。

表示每一帧作用在粒子上的力是均匀随机产生的。 

7.生命周期颜色模块:控制每一个粒子在生命周期内颜色的变化。

8:速度范围颜色变化控制模块:根据设置速度的范围和粒子的速度来改变粒子的颜色。

9:生命周期粒子大小模块:控制每个粒子在生命周期内,大小的变化。

10: 速度范围粒子大小变化控制模块:根据速度的变化改变粒子的大小。

 

11:生命周期每个粒子的旋转速度:每秒粒子旋转的角度。

12:根据速度变化改变粒子的旋转速度:旋转速度不为固定常数时。

13:外部作用力倍增数:调整风对粒子的影响情况。

14:碰撞模块:为粒子创建粒子碰撞效果,目前只支持平面碰撞。

平面碰撞只支持6个平面,点击+号可以添加现在有的平面或是新建立一个。

通过新建立了碰撞平面,会成为粒子物体的子物体。

  Visualization:碰撞平面的显示方式。

——————Grid:  

——————Solid: 

Scale Plane:碰撞平面的大小。

Dampen:阻尼系数。粒子速度撞击损耗程度。0~1。

Bounce:反弹系数。0~2.系数越大,反弹角度越小。

Min kill Speed:最小销毁速度。当速度小于这个值的时候,粒子消失。

Particle Radius:粒子碰撞半径。最小值为0.01。

世界碰撞:

Collides With:碰撞层级。选择与那一层级碰撞。

Collision Quality:碰撞质量。

——————High: 每个粒子会每帧与场景做一次射线碰撞检测,需要注意的是,这样会增加CPU的负担,故在此情况下整个场景中的粒子数应当小于1000。

——————Medium: 粒子系统在每帧会受到一次Parude Raycast Budget全局设定的影晌。

——————Low: 与 中等效果相似 ,只 是粒子系统每4帧才受一次Parude Raycast Budget全局参数的影晌。

 —————— Voxel Size:碰撞缓存中的体素的尺寸,仅当Collision Quality为Medium和Low时可用。

15:子粒子发射模块:在粒子出生,碰撞,消灭时可以调用其他粒子。

   

  

  16:序列帧动画纹理模块:

Tiles:x水平分割的份数,y垂直分割的份数。

Animation:Whole Sheet-整个页面即X,Y一起移动。

Frame over Time:生命周期内,动画变幻的速率。

Cycles:生命周期内变化几次动画。

Animation:Single Row-从左到右行滚动。

Random Row:随机行。

Row:选择某一行,开始滚动,小于Tiles中的Y。

17:粒子的渲染模块:

Render Mode:渲染模式。

——————Billboard:面板渲染。

——————Vertical Billboard垂直渲染,此模式当面对摄像机时,粒子将与zX平面对齐

——————Horizontal Billboard :水平模式,此模式下粒子将沿Y轴对齐。

——————Stretched Billboard:拉伸渲染。

————C ameraScale:相机缩放。摄像机的速度对于粒子伸缩影晌的程度。speed Scale:通过比较粒子的速度决定粒子的长度。 LengthScale:通过比较粒子的宽度决定粒子的长度。

——————Mesh:模式。

18:属性:

Resimulate:实时渲染。在改变参数的时候,场景中的粒子效果实时变化。

Wireframe:选择时,将显示粒子的片面网格。

Trail Renderer

Line Renderer

Lens Flare

Halo

Projector

Legacy Particles

没有更多推荐了,返回首页