Godot 4 练习 - 制作粒子

演示项目dodge_the_creeps中,有一个Trail,具体运行效果

想要看看咋实现的,看完也不清晰,感觉是要设置某些关键的属性

 ChatGPT说:以下是一些重要的属性:

  • texture:用于渲染粒子的纹理。您可以使用一个2D纹理或者一个动画纹理(AnimatedTexture)。
  • size:粒子的尺寸。
  • speed:粒子的速度。
  • amount:粒子总数。
  • emit_radius:粒子发射的半径。
  • pixel_size:在屏幕上的像素大小。
  • draw_order:绘制顺序。
  • lifetime:粒子在屏幕上的存在时间。
  • offset:粒子的偏移量。
  • texture_offset:纹理的偏移量。
  • blend_mode:像素混合模式。
  • gravity:重力影响。
  • radial_acceleration:径向加速度。
  • tangential_acceleration:切向加速度。
  • particle_system:用于管理粒子的父节点。

 唉,ChatGPT也没啥用哈,有些属性是有的,用些属性是没有的,真真假假,费劲。

还是在B站找找有没有教程。找到一个

[Godot 4] 2D火灾、烟雾和爆炸粒子效果_哔哩哔哩_bilibili

这个教程有点意思,不说话,放点背景音乐加一些步骤文字说明,我试了下,还有效果。记录一下

火焰粒子

  • 创建GPUParticles2D节点,为了看效果,把它拖到屏幕中间。下来就开始设置各关键属性

  • 首先是Process Material,下拉,点选 new ParticleProcessMaterial。这步之后,对象开始喷射了。如果太小,可以滚轮放大一下看到效果

 点击ParticleProcessMaterial进行进一步设置。先设置重力方向向上(y = -98),则开始向上喷射

  • 再设置Scale,看了该属性后,我的理解是这是一个映射,输入0 ~ 1,即粒子从出发到消失这一段距离,输出也是0 - 1之间的值,通过曲线设置将每个输入值得到一个输出值,输出值就是对应位置的缩放比例,为1表示原大小,为0表示消失,其余按比例显示大小。正常发射,开始大,最终消失,所以可以设置曲线为

  • 再继续设置Scale Min = 2, Scale Max = 2,相当于缩放基数为2,但最终消失时0*2还是0
  • 下来是效果加分项:颜色设置。Color -> Color Ramp。Color Ramp是一种用于定义粒子的颜色渐变的纹理。在Color Ramp下拉列表中,选new GradientTexture1D,并进一步设置其各关键颜色0(HSV 47/82/100) 0.5(RGB 255/83/37) 1(RGBA 42/42/42/145)

  • 当然,粒子颜色渐变纹理也可以用代码实现,后续再研究
# 为Color Ramp纹理分配一个Color Ramp对象。Color Ramp对象是一个包含多个颜色值的数组,用于定义渐变的颜色
ramp = [Color(1, 0, 0, 1), Color(0, 1, 0, 1), Color(0, 0, 1, 1)]
# 创建一个Color Ramp纹理
color_ramp_texture = Environment.get_current_environment().set_texture("color_ramp_texture", ColorRampTexture.new(ramp))
# 将Color Ramp纹理分配给GPUParticles2D组件
trail.texture = color_ramp_texture
  •  增加粒子发射量 Amount = 50

  •  创建脉冲噪声(扰动)的纹理: Turbulence.Enabled = true, Noise Scale = 1.08

 烟雾粒子

  • 前两步同火焰粒子:创建GPUParticles2D节点,new ParticleProcessMater
  • 设置Time.Explosiveness为最大值1,用于定义粒子系统发射速度
  • 增加纹理,GPUParticles2D.Texture设置为smoke.png。
  • 设置CanvasItem.Texture.Filter为Nearest,方向Direction.Spread为180,则出现四周散射效果
  • 设置Gravity为0,表示无重力作用。设置初速度InitialVelocity为25 ~ 75
  • 设置数量Amount为30
  • 设置Scale,控制发射过程消失效果
  • 设置颜色,控制发射过程颜色变化效果:开始全白色,结果为全透明
  • 设置Turbulence
  • 控制阻尼Damping,其Min = Max = 28.13,使得结果更为顺滑
  • 最终效果

与视频中有偏差,原因在于纹理素材。

爆炸粒子

与前面大同小异,不用纹理,控制方向颜色及scale等即可。

演示项目中的Trail

现在回头看Trail效果。相关的属性设置为:

gravity = Vector3(0, 0, 0)

scale_curve.curve._data = [Vector2(0.00501098, 0.5), 0.0, 0.0, 0, 0, Vector2(0.994989, 0.324), 0.0, 0.0, 0, 0]

scale_curve.curve.point_count = 2

color_ramp.gradient.colors = PackedColorArray(1, 1, 1, 0.501961, 1, 1, 1, 0)

仔细一想,原来这个粒子效果就在原地,从发射到消失这个过程保持不动,也就是说,消失的位置还是在发射的位置。但由于玩家在动,所以发射的位置在不断变化,消失的位置也在相应变化,给人感觉就是有拖影或轨迹。

这个思路不错,粒子系统就是典型的发射后不管,其实是godot引擎把后续的事做了。

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

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

相关文章

国内GitHub加速访问工具-Fetch GitHub Hosts

一、工具介绍 Fetch GitHub Hosts是一款开源跨平台的国内GitHub加速访问工具,主要为解决研究及学习人员访问 Github 过慢或其他问题而提供的 Github Hosts 同步工具。 项目原理:是通过部署此项目本身的服务器来获取 github.com 的 hosts,而…

FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法

1、之前写过一篇关于ZYNQ系列通用的PS侧与PL侧通过AXI-HP通道的文档,下面是链接。 FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)_zcu106调试_发光的沙子的博客-CSDN博客大家好,今天给大家带来的内容是&#xff0…

完整模型的训练套路

从心所欲 不逾矩 天大地大 皆可去 一、官方模型的初使用 使用VGG16模型 VGG模型使用代码示例: import torchvision.models from torch import nndataset torchvision.datasets.CIFAR10(/cifar10, False, transformtorchvision.transforms.ToTensor())vgg16_true …

【逗老师的PMP学习笔记】5、项目范围管理

目录 一、规划范围管理二、收集需求1、【关键工具】头脑风暴2、【关键工具】访谈3、【关键工具】问卷调查4、【关键工具】标杆对照(对标)5、【关键工具】亲和图和思维导图6、【关键工具】质量功能展开7、【关键工具】用户故事8、【关键工具】原型法9、【…

VBA技术资料MF38:VBA_在Excel中隐藏公式

【分享成果,随喜正能量】佛祖也无能为力的四件事:第一,因果不可改,自因自果,别人是代替不了的;第二,智慧不可赐,任何人要开智慧,离不开自身的磨练;第三&#…

MySQL(1)

MySQL创建数据库和创建数据表 创建数据库 1. 连接 MySQL mysql -u root -p 2. 查看当前的数据库 show databases; 3. 创建数据库 create database 数据库名; 创建数据库 4. 创建数据库时设置字符编码 create database 数据库名 character set utf8; 5. 查看和显示…

【具身智能】前沿思考与总结(谷歌微软)

0. 总结 0.1 万字长文,当机器人拥抱大模型 只需要告诉机器人它要做的任务是什么,机器人就会理解需要做的事情,拆分任务动作,生成应用层控制指令,并根据任务过程反馈修正动作,最终完成人类交给的任务。整个…

小程序自定义tabBar+Vant weapp

1.构建npm,安装Vant weapp: 1)根目录下 ,初始化生成依赖文件package.json npm init -y 2)安装vant # 通过 npm 安装 npm i vant/weapp -S --production 3)修改 package.json 文件 开发者工具创建的项…

如何在 Ubuntu 上部署 ONLYOFFICE 协作空间社区版?

ONLYOFFICE 协作空间是一个在线协作平台,帮助您更好地与客户、业务合作伙伴、承包商及第三方进行文档协作。今天我们来介绍一下,如何在 Ubuntu 上安装协作空间的自托管版。 ONLYOFFICE 协作空间主要功能 使用 ONLYOFFICE 协作空间,您可以&am…

MySQL的关键指标及采集方法

MySQL 是个服务,所以我们可以借用 Google 四个黄金指标的思路来解决问题。 1、延迟 应用程序会向 MySQL 发起 SELECT、UPDATE 等操作,处理这些请求花费了多久,是非常关键的,甚至我们还想知道具体是哪个 SQL 最慢,这样…

用html+javascript打造公文一键排版系统15:一键删除所有空格

现在我们来实现一键删除所有空格的功能。 一、使用原有的代码来实现,测试效果并不理想 在这之前我们已经为String对象编写了一个使用正则表达式来删除所有空格的方法: //功能:删除字符串中的所有空格 //记录:20230726创建 Stri…

机器学习笔记 - 关于GPT-4的一些问题清单

一、简述 据报道,GPT-4 的系统由八个模型组成,每个模型都有 2200 亿个参数。GPT-4 的参数总数估计约为 1.76 万亿个。 近年来,得益于 GPT-4 等高级语言模型的发展,自然语言处理(NLP) 取得了长足的进步。凭借其前所未有的规模和能力,GPT-4为语言 AI​​设立了新标准,并为机…