新 Unity 最新粒子系统如何用代码改变参数
2016-07-20 22:48
399 查看
Unity 最新的用粒子系统用代码控制各项参数
新的粒子系统api换了不少,采用了很多的结构,原先很多api已经过时,或者更早就没有,网上找了找发小也是少之又少,下面小白就展示一下如何用代码控制各个参数(这里只是一小部分,有兴趣可以自己试试,!!一会百会!!)之前无心随便写写,可能写的比较乱,现在重新整理下,我用的unity5.5
1.1代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ParticleTest : MonoBehaviour
{
public ParticleSystem particleSys;
ParticleSystem.EmissionModule parEmission;
ParticleSystem.ShapeModule parShape;
//----------------------
ParticleSystem.MinMaxCurve parMinMaxCurve;
void Start()
{
parEmission = particleSys.emission;
parShape = particleSys.shape;
//-----------------
parMinMaxCurve = new ParticleSystem.MinMaxCurve(20);
parEmission.rateOverTime = parMinMaxCurve;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.O))
{
particleSys.Play();
}
if (Input.GetKeyDown(KeyCode.S))
{
particleSys.Stop();
}
if (Input.GetKeyDown(KeyCode.E))
{
SetParEmission(50, 1000);
}
if (Input.GetKeyDown(KeyCode.A))
{
ChangeParEmission(10);
}
if (Input.GetKeyDown(KeyCode.H))
{
SetParShape();
}
}
/// <summary>
/// 设置emission
/// </summary>
private void SetParEmission(float min, float max)
{
//单独设置
//parEmission.rateOverTimeMultiplier = min;
//or parEmission.rateOverDistanceMultiplier = min;
//Curve设置
parEmission.rateOverDistance = new ParticleSystem.MinMaxCurve(min, max);
//or parEmission.rateOverTime = new ParticleSystem.MinMaxCurve(min, max);//设置粒子数量,min10 max100;
}
private void ChangeParEmission(float addRate)
{
parMinMaxCurve.constant += 10;
parEmission.rateOverTime = parMinMaxCurve;
//另一种
//如果设置
//parMinMaxCurve = new ParticleSystem.MinMaxCurve(10,100);
//parEmission.rateOverTime = parMinMaxCurve;
//那么
//if (parMinMaxCurve.constantMin < parMinMaxCurve.constantMax)
//{
// parMinMaxCurve.constantMin += addRate;
// parEmission.rateOverTime = parMinMaxCurve;
//}
}
private void SetParShape()
{
parShape.shapeType = ParticleSystemShapeType.Box;//设置为box形状
parShape.box = new Vector3(2, 2, 2); //设置长宽高
}
}
2:另外新版的例子系统可以让粒子受到WindZone风的影响 ,只需要将External forces打勾勾
相关文章推荐
- unity3d 第九天
- 一步一步学习Unity3d学习笔记系1.1
- unity 类的序列化
- Unity 中gameObject.SetActive()方法的使用
- Photon Server笔记1:启动MMO Demo 2016/07/20
- unity 协成的执行顺序
- 【Unity Shader】第二节 为上一节课的shader增加属性
- 【Unity3d】碰撞检测
- Unity camera.rect 用法
- Git学习笔记1
- Unity3D占用内存太大的解决方法
- Unity 3D - 生命周期
- unity3d的local和global
- Unity 3D - 优化内存
- 使用Unity开发HoloLens应用
- (来自知乎)Unity反射机制的理解
- Unity 3D - MipMap
- Unity和Android相互通信
- Unity3d gameObject
- Unity3d Time