Unity3d 制作粒子光环

Unity3d 制作粒子光环

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

1、创建对象

创建一个空对象,命名为Particle,并以它为根,创建两个Particle System,分别命名为Ring和Star,这两个就是待会的粒子光环效果。

注意2019版的Unity3d的粒子系统在Effects里面。

初步设想是Ring的运动用代码控制,Star的运动直接在属性里面设置。

下图是Ring的Inspector:

在这里插入图片描述

2、脚本控制Ring的运动
  • 新建脚本RingParticle来控制Ring的粒子运动效果,挂载到Ring上运行。

  • 添加参数

private ParticleSystem ps; //粒子系统
private ParticleSystem.Particle[] particles; //粒子系统中的粒子
public int count = 1000; //粒子数量
public float size = 0.3f; //粒子大小
public float maxRadius = 12f;//圆环的最大半径
public float minRadius = 5f;//圆环的最小半径
public Gradient gradient; //控制粒子的颜色变换
private float[] radiuses; //粒子的半径
private float[] angles; //粒子的角度
  • 在Start()函数中设置粒子环的初始状态
particles = new ParticleSystem.Particle[count];
radiuses = new float[count];
angles = new float[count];
ps = GetComponent<ParticleSystem>();
ps.maxParticles = count; 
ps.loop = false;
ps.startSpeed = 0; 
ps.startSize = size; 
ps.Emit(count); //发射粒子
ps.GetParticles(particles);
for (int i = 0; i < count; ++i)
{    
    float midRadius = (maxRadius + minRadius) / 2;
    float minRate = Random.Range(1.0f, midRadius / minRadius);
    float maxRate = Random.Range(midRadius / maxRadius, 1.0f);
    float radius = Random.Range(minRadius * minRate, maxRadius * maxRate); 
    float angle = Random.Range(0.0f, 360.0f);
    float theta = angle / 180 * Mathf.PI;
    radiuses[i] = radius;
    angles[i] = angle;
    particles[i].position = new Vector3(radius * Mathf.Cos(theta), radius * Mathf.Sin(theta), 0);
}
ps.SetParticles(particles, particles.Length);
  • Update()函数控制粒子的运动
for (int i = 0; i < count; ++i)
{   
     //将粒子的旋转速度分成10个不同的速度,让不同的粒子有不同的速度
     angles[i] -= (i / 100 + 1) / radiuses[i] * Random.Range(1, 3);
     angles[i] = (360.0f + angles[i]) % 360.0f;
     float theta = angles[i] / 180 * Mathf.PI;
     //让粒子的半径在一定范围内波动
     radiuses[i] += Random.Range(-0.01f, 0.01f);
     particles[i].position = new Vector3(radiuses[i] * Mathf.Cos(theta), radiuses[i] * Mathf.Sin(theta), 0);
     //给粒子加上颜色特效
     particles[i].color = gradient.Evaluate(0.5f);
}
ps.SetParticles(particles, particles.Length);
3、设置Star的属性

主要是设置了Start Color,Shape,和Color over Lifetime,其他的都是默认的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、设置相机属性

首先调整相机的位置,使它能够看到粒子光环的中心,这样看起来效果更好。

然后,为了有更好的效果,将背景设为黑色,如下图:

在这里插入图片描述

最后就制作好简单的粒子光环了,效果如下:

在这里插入图片描述

视频链接

github链接

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值