Unity-Particle System属性介绍(一)基本属性

什么是ParticleSystem

粒子系统是Unity中用于模拟大量粒子的行为的组件。每个粒子都有一个生命周期,包括出生、运动、颜色变化、大小变化和死亡等。粒子系统可以用来创建烟雾、火焰、水、雨、雪、尘埃、闪电和其他各种视觉效果。

开始

在项目文件下创建一个Vfx文件夹用于存放我们的Prefab资源。进入Vfx文件夹之后,右键选择Prefab,命名为testVfx后双击在Scenes界面出现一个空白对象。

Add Component中输入Particle System(之后简称PS)便可以自动添加一个带有示例的Particle System组件。

点击播放,可以见到下图效果:

基本属性

由于Particle System中属性内容复杂,将会分模块讲述。我们姑且将testVfx中的部分称之为基本属性,内容如下,可以对照目录直接跳转对应部分查看。

Duration-发射粒子的时间长度

PS发射粒子的时间长度(以秒为单位),如果勾选了下方的looping则默认设置为1。

将其设置为3并将原本的looping取消勾选,便可以发现粒子发射大约3s后停止发射。

Prewarm-预热选项

预热选项(常用于大量粒子会被发射,需要提前进行模拟的情景),仅有当looping勾选时方可进行勾选。

The Particle System looks like it has already simulated for one loop when first becoming visible.

Start Delay-开始发射的延迟时间(秒)

开始发射的延迟时间(秒),但是Duration中设计的秒数会往后顺延——原本3s结束发射,拖延到了4s结束。

Start Lifetime-粒子的生命周期

粒子的生命周期。将其设置为2之后再次点击播放,可以明显见到存在的粒子数目明显减少,消散速度变快。

StartSpeed-开始时的出发速度

开始时的出发速度,我们将其设置为20。可以见到锥形显示区域明显变大,播放后粒子移动速度加快。

3D Start Size-3D 方向伸长大小调节

如果勾选,便可以调节粒子在x,y,z轴上各自的长度。留意此处坐标轴并非是和世界坐标轴相一致,而是相对于相机的坐标轴。

我们将z设置为10,点击播放。可以发现并没有发生变化。因为z轴是垂直我们观察角度的轴,其长短变化不可视。使用右键移动视角之后发现亦是如此。

将z设置回1,将x设置为7。点击播放。

3D Start Rotation-旋转角度

如果勾选,便可以调节粒子在x,y,z轴上各自的逆时针翻转角度(度)。我们将z设置为90。

可以见到原本横条全部变为了竖条(薯条🍟)。

Flip Rotation-反翻转

设置多少比例的粒子,反着设置的3D Start Rotation进行发射。(取值范围0~1)

我们将3D Start Rotation中的z设置为45,Flip Rotation设置为0.3。

可以见到少数粒子变为顺时针翻转45°。

Start Color-开始粒子颜色

设置一开始的粒子颜色,但是非常短暂几乎不可见。

Gravity Source-重力来源

拥有 3D Physics 和 2D Physics 两个选项。根据实际项目情况进行选择即可。

Gravity Modifier-重力调节器

重力的调节器,设置为0为无重力状态,之后 True Gravity = Modifier * Gravity。

此处我们设置为1,可以看到粒子呈现往下掉的视觉效果。

Simulation Space-粒子模拟相对空间

粒子模拟空间

  • Local:粒子系统将在其父对象(一般为Particle System所属对象)的局部空间内进行模拟。这意味着粒子的位置是基于父对象的位置和旋转计算的。这对于当你想要粒子系统跟随父对象移动或旋转时非常有用。

  • World:粒子系统将在世界空间中进行模拟。这意味着粒子的位置是基于整个场景的世界坐标计算的。这对于当你想要粒子系统独立于父对象移动或旋转时非常有用。

  • Custom:粒子系统将在自定义空间中进行模拟。这是一个更高级的选项,允许你定义自己的空间变换矩阵,从而实现更复杂的粒子系统行为。

Simulation Speed-粒子模拟速度

模拟速度。我们将其设置为秒,可以见到原本结束发射时间为4秒,现在被快进2倍到2秒。


Delta Time-更新时间模式

在粒子系统中,Delta Time(ΔT)是每一帧中时间的增量,用来驱动粒子系统的更新。Delta Time 可以有两种模式:ScaledUnscaled,它们的区别主要体现在时间的计算方式上。

1. Scaled Delta Time

Scaled Delta Time 是根据游戏的帧率和时间缩放(Time Scale)来计算的。也就是说,它会受到游戏时间缩放的影响。当游戏处于暂停状态(即 Time.timeScale为 0)时, Delta Time 会变为 0,这会导致粒子系统的更新暂停。此选项通常用于基于实际游戏进度更新粒子的行为。

  • 适用场景:当你希望粒子系统的行为与游戏的时间流逝同步(如普通的物理模拟)时使用 Scaled Delta Time。
  • 影响因素
    • 游戏暂停时,Delta Time 为 0。
    • 如果游戏速度变慢,粒子系统的更新也会变慢。

2. Unscaled Delta Time

Unscaled Delta Time 是不受游戏时间缩放影响的时间增量。即使游戏暂停或时间缩放发生变化,Unscaled Delta Time 仍然会按照真实的时间流逝进行计算。通常用于需要不受时间缩放影响的粒子行为,比如基于真实世界时间的粒子更新,或者希望粒子系统独立于游戏的时间控制之外。

  • 适用场景:当你希望粒子系统的行为独立于游戏时间流逝时(比如在暂停或时间慢速时依然希望粒子继续播放)使用 Unscaled Delta Time
  • 影响因素
    • 游戏暂停时,Unscaled Delta Time 仍然会继续计算,保持粒子的更新。
    • 游戏时间缩放对粒子系统没有影响。

Scaling Mode-缩放方式

  • Hierarchy:粒子系统缩放依赖于父物体的缩放,适用于需要粒子与父物体一起缩放的场景。
  • Local:粒子系统的缩放独立于父物体,适用于不希望粒子系统受到父物体缩放影响的情况。
  • Shape:只将缩放应用于形状模块。这种方式下,只有粒子发射器的形状和大小会被缩放所影响,而不改变生成的粒子的大小。

Play On Awake-唤醒播放

是否在被enable时就开始播放,并且此选项会作用于所有Particle System下的这个Particle Effect。

Emitter Velocity Mode-发射速度模式

发射速度模式设置

  • Transform: 根据系统的变换为粒子增加速度。这意味着如果粒子系统本身在运动或旋转,这种运动将传递给发射的粒子。
  • Rigidbody: 使用与粒子系统连接在同一个游戏对象上的刚体组件。如果物体有一个刚体并且它在运动,粒子就会继承这个运动。
  • Custom: 允许使用 Custom Velocity 属性指定粒子的自定义速度。

Max Particles-最大粒子数

最大粒子数,可以有效防止策划同学填了一个毁灭世界的值。: )

Auto Random Seed-行为随机化

勾选后,每次发射的行为都将不同(引入随机变量,有点像C语言里面的srand)

Stop Action-完结动作

当所有粒子发射之后,GameObject所应该执行动作。

  • None:不采取任何行动。粒子系统停止后,游戏对象保持启用状态。
  • Disable:禁用游戏对象。当粒子系统停止且所有粒子都消失时,游戏对象将被禁用。这可以防止游戏对象接收更新调用,从而节省CPU资源。
  • Destroy:销毁游戏对象。当粒子系统停止且所有粒子都消失时,游戏对象将被销毁。这将完全移除游戏对象及其组件,释放所有相关资源。
  • CallBack: 未知,占空

Culling Mode-未显示时行为模式

粒子系统未在屏幕显示上的行为模式。

  • Automatic:此选项表示当粒子系统不在屏幕上时,Unity会自动决定是否继续模拟粒子系统。具体来说,对于循环系统,它会暂停离屏模拟;而对于非循环系统,则始终模拟。

  • Pause and Catch-up:选择此选项时,当粒子系统不在屏幕上时,Unity会暂停其模拟。但是,一旦粒子系统重新进入屏幕,Unity会执行一个大型的仿真步骤来追赶时间,使得粒子看起来就像它们从未被暂停一样。

  • Pause:选择此选项时,当粒子系统不在屏幕上时,Unity会暂停其模拟。这意味着粒子系统会在粒子系统再次出现在屏幕上之前停止生成新的粒子,直到它重新出现为止。

  • Always Simulate:选择此选项时,无论粒子系统是否在屏幕上,Unity都会持续地模拟粒子系统。这意味着即使在粒子系统不在屏幕上时,也会继续生成新的粒子。

Ring Buffer Mode-粒子结束行为

  • Disabled:这是默认设置。在这种模式下,粒子在其生命周期结束后就会死亡,然后新粒子会取代旧粒子。

  • Pause Until Replaced:当粒子的生命周期结束时,它们不会立即死亡,而是会暂停,直到有新的粒子替换它们。

  • Loop Until Replaced:当粒子的生命周期结束时,它们会重置为初始状态并开始一个新的生命周期。粒子会不断循环,直到有新的粒子替换它们。对象池模式。

结语

用好Particle System是创造出优秀游戏动态美术效果的第一步。

一起加油,无限进步!

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

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

相关文章

.NET8/.NETCore 依赖注入:自动注入项目中所有接口和自定义类

.NET8/.NETCore 依赖接口注入&#xff1a;自动注入项目中所有接口和自定义类 目录 自定义依赖接口扩展类&#xff1a;HostExtensions AddInjectionServices方法GlobalAssemblies 全局静态类测试 自定义依赖接口 需要依赖注入的类必须实现以下接口。 C# /// <summary>…

Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建

Brain.js 是一个强大且易用的 JavaScript 神经网络库&#xff0c;适用于前端和 Node.js 环境&#xff0c;帮助开发者轻松实现机器学习功能。 在前文Brain.js&#xff08;一&#xff09;&#xff1a;可以在浏览器运行的、默认GPU加速的神经网络库概要介绍-发展历程和使用场景中&…

使用pyQT完成简单登录界面

import sysfrom PyQt6.QtGui import QMovie,QPixmap from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QPushButton,QLineEdit#封装我的窗口类 class MyWidget(QWidget):#构造函数def __init__(self):#初始化父类super().__init__()# 设置窗口大小self.resize(330,…

理解 Python PIL库中的 convert(‘RGB‘) 方法:为何及如何将图像转换为RGB模式

理解 Python PIL库中的 convert(RGB) 方法&#xff1a;为何及如何将图像转换为RGB模式 在图像处理中&#xff0c;保持图像数据的一致性和可操作性是至关重要的。Python的Pillow库&#xff08;继承自PIL, Python Imaging Library&#xff09;提供了强大的工具和方法来处理图像&…

avcodec_alloc_context3,avcodec_open2,avcodec_free_context,avcodec_close

avcodec_alloc_context3 是创建编解码器上下文&#xff0c;需要使用 avcodec_free_context释放 需要使用avcodec_free_context 释放 /** * Allocate an AVCodecContext and set its fields to default values. The * resulting struct should be freed with avcodec_free_co…

linux安装部署mysql资料

安装虚拟机 等待检查完成 选择中文 软件选择 网络和主机名 开始安装 设置root密码 ADH-password 创建用户 等待安装完成 重启 接受许可证 Centos 7 64安装完成 安装mysql开始 Putty连接指定服务器 在 opt目录下新建download目录 将mysql文件传到该目录下 查看linux服务器的…

vscode 怎么下载 vsix 文件?

参考&#xff1a;https://marketplace.visualstudio.com/items?itemNameMarsCode.marscode-extension 更好的办法&#xff1a;直接去相关插件的 github repo 下载老版本 https://github.com/VSCodeVim/Vim/releases?page5 或者&#xff0c;去 open-vsx.org 下载老版本 点击这…

医院管理系统

私信我获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计…

AWS账号提额

Lightsail提额 控制台右上角&#xff0c;用户名点开&#xff0c;选择Service Quotas 在导航栏中AWS服务中找到lightsail点进去 在搜索框搜索instance找到相应的实例类型申请配额 4.根据自己的需求选择要提额的地区 5.根据需求来提升配额数量,提升小额配额等大约1小时生效 Ligh…

SprinBoot整合KafKa的使用(详解)

前言 1. 高吞吐量&#xff08;High Throughput&#xff09; Kafka 设计的一个核心特性是高吞吐量。它能够每秒处理百万级别的消息&#xff0c;适合需要高频次、低延迟消息传递的场景。即使在大规模分布式环境下&#xff0c;它也能保持很高的吞吐量和性能&#xff0c;支持低延…

Day52 | 动态规划 :单调栈 每日温度下一个更大的元素I下一个更大元素II

Day52 | 动态规划 &#xff1a;单调栈 每日温度&&下一个更大的元素I&&下一个更大元素II 单调栈【基础算法精讲 26】_哔哩哔哩_bilibili 及时去掉无用数据&#xff0c;保证栈中元素有序 文章目录 Day52 | 动态规划 &#xff1a;单调栈 每日温度&&下一…

第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0

时间轴&#xff1a; 演示案例&#xff1a; 环境搭建-NodeJS-解析安装&库安装 功能实现-NodeJS-数据库&文件&执行 安全问题-NodeJS-注入&RCE&原型链 案例分析-NodeJS-CTF 题目&源码审计 开发指南-NodeJS-安全 SecGuide 项目、 环境搭建-NodeJ…

Java与AWS S3的文件操作

从零开始&#xff1a;Java与AWS S3的文件操作 一、什么是 AWS S3&#xff1f;AWS S3 的特点AWS S3 的应用场景 二、Java整合S3方法使用 MinIO 客户端操作 S3使用 AWS SDK 操作 S3 &#xff08;推荐使用&#xff09; 三、总结 一、什么是 AWS S3&#xff1f; Amazon Simple Sto…

Unity中的数学应用 之 插值函数处理角色朝向 (初中难度 +Matlab)

CodeMonkey教程&#xff1a; https://www.youtube.com/watch?vQDWlGOocKm8 Siki学院汉化教程&#xff1a;如何使用Unity开发分手厨房&#xff08;胡闹厨房&#xff09;-Unity2023 - SiKi学院|SiKi学堂 - unity|u3d|虚幻|ue4/5|java|python|人工智能|视频教程|在线课程 版本&am…

专业解析 .bashrc 中 ROS 工作空间的加载顺序及其影响 ubuntu 机器人

专业解析 .bashrc 中 ROS 工作空间的加载顺序及其影响 在使用 ROS&#xff08;Robot Operating System&#xff09;进行开发时&#xff0c;通常会涉及多个 Catkin 工作空间&#xff08;Catkin Workspace&#xff09;。这些工作空间包含不同的 ROS 包和节点&#xff0c;可能相互…

第三方Cookie的消亡与Google服务器端标记的崛起

随着互联网用户对隐私保护的关注日益增强&#xff0c;各大浏览器正在逐步淘汰第三方Cookie。这一变革深刻影响了广告商和数字营销人员的用户跟踪和数据分析方式。然而&#xff0c;Google推出的服务器端标记技术为这一挑战提供了新的解决方案。 什么是第三方Cookie&#xff1f; …

SQL注入利用方式(实战Hack World 1)

一、布尔盲注利用 假如注入的网页能返回1或0的提示信息&#xff0c;我们可以写如下代码: select password from admin where username 1 or 11;#11是我们利用的逻辑点&#xff0c;我们能在此处进行一个判断&#xff0c;比如判断某个数据字段第几位上的字符是否为’ 1’&#…

nlp培训重点

SGD梯度下降公式&#xff1a; 当梯度大于0时&#xff0c;变小&#xff0c;往左边找梯度接近0的值。 当梯度小于0时&#xff0c;减去一个负数会变大&#xff0c;往右边找梯度接近0的值&#xff0c;此时梯度从负数到0上升 #coding:utf8import torch import torch.nn as nn impo…

Qt5语法的connect指定多个重载信号槽函数中的具体某一个

Qt5新语法的connect函数&#xff0c;使用起来更加简洁明了&#xff0c;但如果信号槽有同名的多个重载函数&#xff0c;只用类名和函数名就无法绑定&#xff0c;这时&#xff0c;可以使用qOverload来指定参数类型&#xff0c;例如&#xff1a; connect(ui->comboBox, qOverlo…

如何在Spark中使用gbdt模型分布式预测

这目录 1 训练gbdt模型2 第三方包python环境打包3 Spark中使用gbdt模型3.1 spark配置文件3.2 主函数main.py 4 spark任务提交 1 训练gbdt模型 我们可以基于lightgbm快速的训练一个gbdt模型&#xff0c;训练相对比较简单&#xff0c;只要把训练样本处理好&#xff0c;几行代码可…