Unity3d-Particle System 5.x系统的学习(四)

今天,我们来聊聊unity5.x的粒子系统和unity4.x粒子系统的区别。

我大致看了下,区别还是蛮多的,但是总体的粒子制作思路一样,只不过添加了很多子模块方便我们制作出更加美观的粒子。

下面是总体的粒子系统组件:

红色边框划出的就是unity5.x新增的子模块。

ok,我们接下来分析每个模块的特征和参数:

External Forces:(风(wind zone)对粒子的影响)

从英文表面意思解析:就是外部的力。(风力就是外部力)

External Forces module

This property modifies the effect of wind zones on particles emitted by the system.

官方对他的解析是:此参数是影响风力对粒子发射的。

我做了个实验,就是在场景中添加Wind Zone组件,看他是否对粒子有影响:

实验证明确实如此,粒子会受到风力的影响,往风力的方向发射。当增加Multiplier的值,会加大风力对粒子影响的力度,那么偏的也就越大。

Noise:(噪声模块)

这个模块是采用噪声的算法来改变粒子的运动轨迹。下面来看看官方对他的特征描述:

Details

Adding noise to your particles is a simple and effective way to create interesting patterns and effects. For example, imagine how embers from a fire move around, or how smoke swirls as it moves. Strong, high frequency noise could be used to simulate the fire embers, while soft, low frequency noise would be better suited to modeling a smoke effect.

For maximum control over the noise, you can enable the Separate Axes option. This allows you to control the strength and remapping on each axis independently.

翻译来的意思就是:

向粒子添加噪声是创建有趣模式和效果的一种简单而有效的方法。例如,想象一下火中的余烬是如何移动的,或者烟雾在移动时是如何旋转的。强、高频噪声可以用来模拟火烬,而软、低频噪声更适合模拟烟雾效果。

说人话就是,噪声可以改变粒子运动轨迹,模拟余烬和烟雾,他们都有个特征就是螺旋上升。

我们来看下增加噪声模块和没有噪声的区别:

1.没有噪声:

2.有噪声

可以看到区别了吧,明显加了噪声的粒子十分暴动,呈现上下螺旋运动。非常符合我们火的余烬这种运动不规则的粒子。

Triggers:(触发器模块)

从第一个参数看,是要传入一个触发器。

然后下面是粒子和触发器不同的状态:

1.Inside(粒子在触发器里面)

2.Outside(粒子在触发器外面)

3.Enter(粒子进入触发器)

4.Exit(粒子退出触发器)

那么后面的选项是什么东西:

可以看到总共有三种:

1.Ignore:表示粒子不做任何处理。

2.Kill:表示粒子会消亡。

3.Callback:回到函数,我们需要代码添加。

ok,举个例子。比如粒子进入到这个触发器要销毁,那么我们在Enter后面选项选择Kill就行了。

Callback的使用方法:

我们具体来看看Callback怎么实现代码传入:

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class ParticleCallbackTest : MonoBehaviour
{
ParticleSystem ps;//粒子系统,这里和粒子区分开,一个是系统,一个是粒子
List<ParticleSystem.Particle> enter = new List<ParticleSystem.Particle>();//进入触发器的粒子链表
List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();//退出触发器的粒子链表
void Start()
{
ps = GetComponent<ParticleSystem>();
}
private void OnParticleTrigger()
{
int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
//进入触发器的粒子改变颜色为红色
for (int i = 0; i < numEnter; i++)
{
ParticleSystem.Particle p = enter[i];
p.startColor = new Color32(255, 0, 0, 255);
enter[i] = p;
}
//退出触发器的粒子改变颜色为绿色
for (int i = 0; i < numExit; i++)
{
ParticleSystem.Particle p = exit[i];
p.startColor = new Color32(0, 255, 0, 255);
exit[i] = p;
}
//需要重新为粒子系统设置改版后的粒子
ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter);
ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
}
}

可以看到粒子进入触发器变红,退出变绿,这都是代码控制的。

注意,在Enter和Exit必须选择Callback,否则是没有效果的哦。

Unity3d-Particle System 5.x系统的学习(四)的更多相关文章

  1. Unity3D学习笔记——组件之Effects(效果/特效)——Particle System(粒子系统)

    Effects:效果/特效. Particle System:粒子系统.可用于创建烟雾.气流.火焰.涟漪等效果. 在Unity3D 3.5版本之后退出了新的shuriken粒子系统:   添加组件之后 ...

  2. Unity3d-Particle System系统的学习(一)

    最近看了下Unity3d的粒子系统的相关视频,并且动手操作了下,感觉自己的美工技能又增进了下(开个小玩笑),发现粒子系统所需要记忆的东西还是有点多的. 所以为了不让自己遗忘某些知识点,我准备发布成博客 ...

  3. Linux 系统编程 学习:04-进程间通信2:System V IPC(1)

    Linux 系统编程 学习:04-进程间通信2:System V IPC(1) 背景 上一讲 进程间通信:Unix IPC-信号中,我们介绍了Unix IPC中有关信号的概念,以及如何使用. IPC的 ...

  4. Linux 系统编程 学习:05-进程间通信2:System V IPC(2)

    Linux 系统编程 学习:05-进程间通信2:System V IPC(2) 背景 上一讲 进程间通信:System V IPC(1)中,我们介绍了System IPC中有关消息队列.共享内存的概念 ...

  5. Unity3d-Particle System系统的学习(二)

    这节我们继续上节没讲完的Particle参数. 上节我们讲了Emission发射器参数,我们接着往下讲Shape: 可以看到这个子模块的参数是跟形状有关: 1.Shape:发射形状.粒子被约束在这个形 ...

  6. Unity3d-Particle System系统的学习(三)

    这节课我们来实战下上几节讲的几乎所有Particle System用到的参数. 我们今天制作下图所示的粒子: 类似于带有光晕的魔法球.用到的材质也就是上节课用到的材质贴图. http://pan.ba ...

  7. Unity3D:粒子系统Particle System

    1. GameObject → Create Other  →  Particle System. 2. 选中 Particle System,可看到下列屬性: 3.Particle System: ...

  8. 粒子系统模块(Particle System Modules40)

    粒子系统模块(Particle System Modules40) 粒子系统模块(忍者飞镖) 粒子系统(忍者飞镖)(Particle System (Shuriken)) 用模块描述粒子一段时间内的行 ...

  9. Linux 系统编程 学习 总结

    背景 整理了Liunx 关于 进程间通信的 很常见的知识. 目录 与 说明 Linux 系统编程 学习:000-有关概念 介绍了有关的基础概念,为以后的学习打下基础. Linux 系统编程 学习:00 ...

随机推荐

  1. 【BZOJ】4671: 异或图

    题解 写完之后开始TTTTTTT--懵逼 这道题我们考虑一个东西叫容斥系数啊>< 这个是什么东西呢 也就是\(\sum_{i = 1}^{m}\binom{m}{i}f_{i} = [m ...

  2. 【记录】【持续更新】mybatis使用记录

    1.>  < 等符号在mybatis中的sql语句需要转义 > : > < : < 2.mybatis动态选择 <choose> <when te ...

  3. poj-1151矩形面积并-线段树

    title: poj-1151矩形面积并-线段树 date: 2018-10-30 22:35:11 tags: acm 刷题 categoties: ACM-线段树 概述 线段树问题里的另一个问题, ...

  4. Bipartite Graph hdu 5313 bitset 并查集 二分图

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5313 题意: 给出n个顶点,m条边,问最多添加多少条边使之构成一个完全二分图 存储结构: bitset   ...

  5. Entity Framework Core(3)-配置DbContext

    设计时 DbContext 配置 EF Core 设计时工具如迁移需要能够发现和创建的工作实例DbContext以收集有关应用程序的实体类型以及它们如何映射到数据库架构的详细信息的类型. 此过程可以为 ...

  6. Highmaps网页图表教程之Highmaps第一个实例与图表构成

    Highmaps网页图表教程之Highmaps第一个实例与图表构成 Highmaps第一个实例 下面我们来实现本教程的第一个Highmaps实例. [实例1-1:hellomap]下面来制作一个中国地 ...

  7. [ 原创 ]学习笔记-三种向ListView中填充简单文本的方法

    Android 中ListView是很重要的一块内容 掌握ListView的基本用法 对学习安卓起着举足轻重的作用 今天就介绍一下三种向ListView 填充简单文本的方法 填充其他数据类型的用法之后 ...

  8. 机器学习之路:python 特征降维 主成分分析 PCA

    主成分分析: 降低特征维度的方法. 不会抛弃某一列特征, 而是利用线性代数的计算,将某一维度特征投影到其他维度上去, 尽量小的损失被投影的维度特征 api使用: estimator = PCA(n_c ...

  9. python的可变与不可变数据类型

    <python的可变与不可变数据类型>     python与C/C++不一样,它的变量使用有自己的特点,当初学python的时候,一定要记住“一切皆为对象,一切皆为对象的引用”这句话,其 ...

  10. 特征向量、特征值以及降维方法(PCA、SVD、LDA)

    一.特征向量/特征值 Av = λv 如果把矩阵看作是一个运动,运动的方向叫做特征向量,运动的速度叫做特征值.对于上式,v为A矩阵的特征向量,λ为A矩阵的特征值. 假设:v不是A的速度(方向) 结果如 ...