一、创建粒子特效游戏物体
二、修改粒子系统属性
- 基础属性
(1)修改发射粒子持续时间(Duration)为3s
(2)取消勾选循环(Looping)
(2)修改粒子存在时间(Start Lifetime)为0.5~1之间的随机值
(3)修改粒子初始速度(Start Speed)为0.6~1.5之间的随机值
(4)修改粒子初始尺寸(Start Size)为0.7~1之间的随机值
(5)修改粒子初始旋转角度(Start Rotation)为0~360之间的随机值
- 发射器(Emission)
(1)设置发射粒子速度(Rate over Time)为0(即不发射粒子)
(2)添加爆发(Burst),Time为0,Count为20
- 发射器形状(Shape)
(1)设置形状(Shape)为Circle
(2)设置旋转角度(Rotation)在x轴方向为0
(3)设置半径为(Radius)0.4
(4)设置模式(Mode)为Burst Spread(爆炸扩散)
- 粒子速度(Velocity over Lifetime)
(1)设置速度更改器(Speed Modifier)为Curve,并编辑速度曲线
- 粒子尺寸(Size over Lifetime)
(1)编辑粒子尺寸(Size)曲线(与速度曲线相似,可直接复制)
- 粒子旋转(Rotation over Lifetime)
(1)设置角速度(Angular Velocity)为90
- 粒子纹理动画(Texture Sheet Animation)
(1)添加粒子精灵图片
三、创建拾取特效预制体
四、拾取草莓时播放特效
- 编辑草莓脚本:
(1)创建拾取特效预制体
cs
public class Strawberry : MonoBehaviour {
// 创建拾取特效预制体
public GameObject pickUpEffectParticlePrefab;
}
(2) 在上一章中已经写了一个删除粒子特效的方法。为了提高代码的复用性,可以新建一个工具类,把删除粒子特效的方法移动到Tool类中,使子弹脚本和草莓脚本都可以调用删除粒子特效的方法(注意:这里的deleteEffectParticle方法是公开、静态的)
cs
public class Tool : MonoBehaviour
{
// 在1s后删除粒子特效
public static async Task deleteEffectParticle(GameObject EffectParticle, float delay)
{
// 等待1s
await Task.Delay(1000);
// 删除粒子特效
Destroy(EffectParticle);
}
}
(3)修改子弹脚本中的deleteHitEffectParticle方法,调用Tool类的deleteEffectParticle方法
cs
public class Bullet : MonoBehaviour
{
// 击中敌人
private void OnCollisionEnter2D(Collision2D collision)
{
Enemy enemy = collision.gameObject.GetComponent<Enemy>();
if(enemy != null) {
enemy.changeHealthPoint(-25);
GameObject hitEffectParticle = Instantiate(hitEffectParticlePrefab, transform.position, Quaternion.identity);
// 调用Tool类中的deleteEffectParticle方法删除粒子特效
Tool.deleteEffectParticle(hitEffectParticle, 1);
}
Destroy(gameObject);
}
}
(4)同理,在草莓脚本中调用Tool类的deleteEffectParticle方法
cs
public class Strawberry : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision) {
Ruby ruby = collision.GetComponent<Ruby>();
if(ruby != null) {
if(ruby.healthPoint < ruby.maxHealthPoint) {
ruby.changeHealthPoint(25);
//创建拾取特效预制体
GameObject pickUpEffectParticle = Instantiate(pickUpEffectParticlePrefab, transform.position, Quaternion.identity);
// 调用Tool类中的deleteEffectParticle方法删除粒子特效
Tool.deleteEffectParticle(pickUpEffectParticle, 1);
// 删除草莓游戏物体
Destroy(gameObject);
}
}
}
}
- 为草莓预制体添加拾取粒子特效
最终效果如下图所示:
本章完。感谢阅读!