【Unity2D 2022:Particle System】添加拾取粒子特效

一、创建粒子特效游戏物体

二、修改粒子系统属性

  1. 基础属性

(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之间的随机值

  1. 发射器(Emission)

(1)设置发射粒子速度(Rate over Time)为0(即不发射粒子)

(2)添加爆发(Burst),Time为0,Count为20

  1. 发射器形状(Shape)

(1)设置形状(Shape)为Circle

(2)设置旋转角度(Rotation)在x轴方向为0

(3)设置半径为(Radius)0.4

(4)设置模式(Mode)为Burst Spread(爆炸扩散)

  1. 粒子速度(Velocity over Lifetime)

(1)设置速度更改器(Speed Modifier)为Curve,并编辑速度曲线

  1. 粒子尺寸(Size over Lifetime)

(1)编辑粒子尺寸(Size)曲线(与速度曲线相似,可直接复制)

  1. 粒子旋转(Rotation over Lifetime)

(1)设置角速度(Angular Velocity)为90

  1. 粒子纹理动画(Texture Sheet Animation)

(1)添加粒子精灵图片

三、创建拾取特效预制体

四、拾取草莓时播放特效

  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);
            }
        }
    }

}
  1. 为草莓预制体添加拾取粒子特效

最终效果如下图所示:

本章完。感谢阅读!

相关推荐
刘若里16 分钟前
【论文阅读】自适应稀疏自注意力——可直接用!
论文阅读·人工智能·笔记·深度学习·计算机视觉
滴_咕噜咕噜16 分钟前
WPF项目实战视频《五》(主要为项目实战-客户端)
笔记
mxwin23 分钟前
Unity URP 中 Mipmap 纹理多级渐远技术 解决远处纹理闪烁(摩尔纹)与性能优化的完整指南
unity·游戏引擎
老虎062723 分钟前
LeetCode热题100 刷题笔记(第六天)双指针 「 盛最多水的容器」
笔记·算法·leetcode
ZhiqianXia26 分钟前
Gem5 学习笔记(3) : 源代码鸟瞰
笔记·学习
南境十里·墨染春水1 小时前
C++笔记 继承关系中构造和析构顺序(面向对象)
开发语言·c++·笔记
无风听海1 小时前
.NET10之C# Extension Members深入分析
大数据·c#·.net·extensionmember
热爱生活的猴子1 小时前
PyTorch导出ONNX报错(ShapeInferenceError)问题笔记(含dynamo=False作用解析)
人工智能·pytorch·笔记
猹叉叉(学习版)1 小时前
【系统分析师_知识点整理】 11.软件架构设计
笔记·架构·软考·系统分析师