【Unity高级】如何实现粒子系统的间歇式喷射

news2024/12/13 0:47:45

先看下要最终实现的效果:
在这里插入图片描述
代码如下:

using UnityEngine;
using System.Collections;

public class ParticleBurstController : MonoBehaviour
{
    private ParticleSystem _particleSystem; // 获取粒子系统
    public float burstDuration = 2f;       // 每次喷射持续时间(秒)
    public float pauseDuration = 2f;       // 每次暂停时间(秒)

    void Start()
    {
        _particleSystem = GetComponent<ParticleSystem>();
        StartCoroutine(ControlParticleBurst());
    }

    private IEnumerator ControlParticleBurst()
    {
        while (true)
        {
            _particleSystem.Play(); // 开启喷射
            yield return new WaitForSeconds(burstDuration); // 等待喷射持续时间

            _particleSystem.Stop(); // 停止喷射
            yield return new WaitForSeconds(pauseDuration); // 等待暂停时间
        }
    }
}

这段代码实现了一个简单的粒子系统 间歇喷射机制,通过控制粒子系统的 Play()Stop() 方法实现了 喷射和暂停交替运行 的效果。

以下是代码的详细解释:


代码结构

1. 类定义与变量声明
private ParticleSystem _particleSystem; // 获取粒子系统实例
public float burstDuration = 2f;       // 每次喷射持续时间,单位为秒
public float pauseDuration = 2f;       // 每次暂停时间,单位为秒
  • _particleSystem:保存当前 GameObject 上的 ParticleSystem 组件实例,用于控制粒子的喷射行为。
  • burstDuration:粒子系统处于“喷射”状态的持续时间。
  • pauseDuration:粒子系统处于“停止”状态的持续时间。

2. 初始化方法
void Start()
{
    _particleSystem = GetComponent<ParticleSystem>(); // 获取当前 GameObject 的粒子系统组件
    StartCoroutine(ControlParticleBurst());           // 启动协程控制粒子喷射逻辑
}
  • GetComponent<ParticleSystem>()

    • 获取挂载在当前 GameObject 上的 ParticleSystem 组件,赋值给 _particleSystem
    • 这一步确保脚本可以访问并操作粒子系统。
  • StartCoroutine(ControlParticleBurst())

    • 启动一个名为 ControlParticleBurst 的协程,用于控制粒子的喷射和暂停循环逻辑。

3. 协程:ControlParticleBurst()
private IEnumerator ControlParticleBurst()
{
    while (true) // 无限循环,持续间歇控制粒子系统
    {
        _particleSystem.Play(); // 开启粒子喷射
        yield return new WaitForSeconds(burstDuration); // 等待喷射时间

        _particleSystem.Stop(); // 停止粒子喷射
        yield return new WaitForSeconds(pauseDuration); // 等待暂停时间
    }
}
  • while (true)

    • 一个无限循环,确保喷射和暂停逻辑反复执行。
    • 每次循环包含两步操作:
      1. 喷射粒子:调用 _particleSystem.Play() 开始粒子喷射。
      2. 暂停粒子:调用 _particleSystem.Stop() 停止粒子喷射。
  • yield return new WaitForSeconds(duration)

    • 暂停协程的执行,等待指定时间 duration 后继续。
    • 第一次 yield 等待粒子喷射的持续时间(burstDuration)。
    • 第二次 yield 等待粒子暂停的持续时间(pauseDuration)。

运行流程

  1. 开始时

    • 获取粒子系统组件。
    • 启动协程控制粒子系统喷射逻辑。
  2. 循环逻辑

    • Step 1: 开始喷射粒子,持续 burstDuration 秒。
    • Step 2: 停止粒子喷射,暂停 pauseDuration 秒。
    • 重复上述步骤,直到停止脚本或销毁 GameObject。

使用场景

  • 需要一个周期性喷射和暂停的粒子效果,例如:
    • 爆炸效果分批喷射。
    • 火山喷发间歇冒烟。
    • 闪烁的灯光粒子特效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2256796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

clipchamp制作视频文字转语音音频

一.准备工作&#xff1a; 1.在浏览器打开 https://app.clipchamp.com/首次打开需要登录&#xff0c;未登录用户注册登录 2.点击右上角头像到Settings页面&#xff0c;点击Language切换到中文&#xff08;英文水平好的可以忽略此步骤&#xff09;因中文英文界面有微小差异&…

开源轻量级文件分享服务Go File本地Docker部署与远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

三菱伺服通过MR Configurator2进行的试运行模式

(1)试运行模式 (a)JOG运转 可以不使用伺服系统控制器执行J0G运行。请在解除强制停止的状态下使用。无论伺服0N/伺服OFF或伺服系统控制器有无连接均可使用。 通过MR Configurator2的J0G运行画面进行操作。 1)运行模式 2)运行方法 "“仅在长按正转、反转按钮中运行”的复选框…

Sqoop导入数据(mysql---->>hive)

目录 数据传输流程脚本报错和异常说明1. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf2. 数据导入hive后显示NULL 数据传输流程 mysql---->>hdfs---->>hive 数据从mysql表中取出&#xff0c;放到hdfs上&#xff08;由targ…

Flask返回中文Unicode编码(乱码)解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【C++AVL树】枝叶间的旋律:AVL树的和谐之道

公主请阅 1.AVL树的概念2.AVL树的插入AVL树插入一个值的大概过程平衡因子更新更新原则更新停止条件 3.AVL树的右转旋转的原则右单旋 4.AVL树的左旋左单旋 5.AVL树的左右双旋6.AVL树的右左双旋7.AVL树的模拟实现 1.AVL树的概念 AVL树是最先发明的自平衡二叉查找树&#xff0c;AV…

深入理解C#的TCPIP通信机制

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;在分布式系统和实时数据交换应用中&#xff0c;C#作为一种现代面向对象编程语言&#xff0c;利用其***命名空间下的Socket类&#xff0c;提供强大的TCP/IP通信功能。本文将探讨C#中TCP/IP通信的基本概念、使用方…

基于yolov8的SAR影像目标检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】

更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章 功能演示&#xff1a; 基于yolov8的SAR影像目标检测系统&#xff0c;支持图像、视频和摄像实时检测【pytorch框架、python源码】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov8的SAR影像目标…

Prime2_解法二:openssl解密凭据

Prime2_解法二&#xff1a;openssl解密凭据 本博客提供的所有信息仅供学习和研究目的&#xff0c;旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动&#xff0c;您将独自承担全…

Jenkins环境一站式教程:从安装到配置,打造高效CI/CD流水线环境-Ubuntu 22.04.5 环境离线安装配置 Jenkins 2.479.1

文章目录 Jenkins环境一站式教程&#xff1a;从安装到配置&#xff0c;打造高效CI/CD流水线环境-Ubuntu 22.04.5 环境离线安装配置 Jenkins 2.479.1一、环境准备1.1 机器规划1.2 环境配置1.2.1 设置主机名1.2.2 停止和禁用防火墙1.2.3 更新系统 二、安装配置Jenkins2.1 安装JDK…

K8S命令部署后端(流水线全自动化部署)

前言 本文为链接: 云效流水线k8s半自动部署java&#xff08;保姆级&#xff09;的补充,本文起初的目的是为了补充完善k8s流水线的全自动化部署,但是也适用于k8s的一键重启,因为使用k8s的web页面容易出现漏点的情况,因此也可以把代码保存为shell脚本,同样可以实现一键重启。关于…

力扣-图论-7【算法学习day.57】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

TEA系列例题

解析 TEA 加密算法(C语言、python)&#xff1a;_tea加密-CSDN博客 CTF-RE 从0到N: TEA_tea加密原理-CSDN博客 1 字节 8 位 牢记密文的64位和密钥的128位,最好可以自己独立的写出tea解密代码 相当于密文是传入8个字符类型数据或者是2个整型数据, 密钥是16个字符数据或者4个…

首批|云轴科技ZStack成为信通院AI Cloud MSP技术服务实验室成员单位

近日&#xff0c;由全球数字经济大会组委会主办&#xff0c;中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;、中国通信企业协会承办的云AI计算国际合作论坛在京举行&#xff0c;会上公布了AI Cloud MSP&#xff08;人工智能云管理服务提供商&#xff09;技…

Docker安装部署RabbitMQ

1. Docker环境准备 1.1 安装Docker 在开始Docker安装部署RabbitMQ之前&#xff0c;确保您的系统环境已经满足Docker的运行要求。以下是在不同操作系统上安装Docker的步骤和命令行演示。 对于Linux系统 在基于Debian的系统&#xff08;如Ubuntu&#xff09;上&#xff0c;您…

Linux下网卡实现NAT转发

目标 在嵌入式Linux设备下&#xff0c;使用单一的网卡&#xff08;前提支持STA&#xff0b;AP共存&#xff09;&#xff0c;使用NAT&#xff08;网络地址转换&#xff09;实现软路由&#xff0c;以自身为热点&#xff0c;将接收到的流量数据全部转发出去。 一&#xff0c;STA…

笔记04--零基础创建个人本地大模型知识库ollama+Dify

ollma安装 官网下载直接下一步下一步即可&#xff0c;没有魔法的朋友可以留言&#xff0c;文章中所用到的文件也给打包了&#xff0c;大家可以直接下载使用通过云盘下载使用。 链接: https://pan.baidu.com/s/12zF9MpQtg1bnMDAQayaSyg 提取码: n9rm 官网地址&#xff1a;http…

Python爬虫:爬取动漫网站的排行榜数据并进行可视化分析

简单介绍 由于哔哩哔哩的网站现在不太方便爬取&#xff0c;我们选择 agefans.com 这个网站完成项目。 我们会爬取排行榜上的数据&#xff0c;并借助可视化手段绘柱状图展示出来。 导入Python库&#xff08;前提&#xff1a;已经安装了所需的库&#xff09; import pandas impo…

MyBatis快速入门(下)

MyBatis快速入门&#xff08;下&#xff09; 六、MyBatis-缓存机制1、一级缓存&#xff08;Local Cache&#xff09;2、二级缓存&#xff08;Global Cache&#xff09;二级缓存标签属性介绍缓存相关设置 3、第三方缓存Mybatis整合ehcache示例 七、MyBatis-逆向工程1、targetRun…

华为TaurusDB与GaussDB:信创改造的“降本提效”之路

近年来&#xff0c;信创&#xff08;信息技术应用创新&#xff09;已成为中国国央企数字化转型的关键词。伴随这一浪潮&#xff0c;众多企业面临一个迫切问题&#xff1a;如何在兼顾性能与成本的前提下&#xff0c;完成核心系统的迁移改造&#xff1f;华为TaurusDB和GaussDB的加…