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引擎把后续的事做了。
相关文章:
Godot 4 练习 - 制作粒子
演示项目dodge_the_creeps中,有一个Trail,具体运行效果 想要看看咋实现的,看完也不清晰,感觉是要设置某些关键的属性 ChatGPT说:以下是一些重要的属性: texture:用于渲染粒子的纹理。您可以使用…...
Java基础继承详解
Java基础继承详解 在Java中,继承是面向对象编程中的一个重要概念。通过继承,一个类可以从另一个类继承属性和方法,使代码重用和扩展更加方便。下面是关于Java基础继承的一些详解: 关键字: 使用extends关键字可以在一个…...
如何维护你的电脑:打造IT人的重要武器
文章目录 方向一:介绍我的电脑方向二:介绍我的日常维护措施1. 定期清理和优化2. 保持良好的上网习惯和安全防护3. 合理安排软件和硬件的使用4. 数据备份和系统还原 方向三:推荐的维护技巧1. 数据分区和多系统安装2. 内部清洁和散热优化3. 安全…...
【雕爷学编程】MicroPython动手做(31)——物联网之Easy IoT 3
1、物联网的诞生 美国计算机巨头微软(Microsoft)创办人、世界首富比尔盖茨,在1995年出版的《未来之路》一书中,提及“物物互联”。1998年麻省理工学院提出,当时被称作EPC系统的物联网构想。2005年11月,国际电信联盟发布《ITU互联网…...
Elasticsearch 快照和恢复
文章目录 简介快照存储库说明创建或更新存储库接口说明路径参数查询参数请求正文 使用 fs 方式创建存储库验证储存库获取存储库信息删除存储库清理储存库 快照创建快照路径参数查询参数请求正文示例 获取快照查询参数示例 克隆快照查询参数示例 获取快照状态示例 恢复快照查询参…...
Packet Tracer - 检验 IPv4 和 IPv6 编址
Packet Tracer - 检验 IPv4 和 IPv6 编址 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 IPv6 地址/前缀 R1 G0/0 10.10.1.97 255.255.255.224 N/A 2001:DB8:1:1::1/64 N/A S0/0/1 10.10.1.6 255.255.255.252 N/A 2001:DB8:1:2::2/64 N/A 本地链路 F…...
PHP8的表达式-PHP8知识详解
表达式是 PHP 最重要的基石。在 PHP8中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是"任何有值的东西"。 最基本的表达式形式是常量和变量。当键入"$a 5",即将值"5"分配给变量 $a。&quo…...
亚马逊云科技七项生成式AI新产品生成式AI,为用户解决数据滞后等难题
7月27日,亚马逊云科技在纽约峰会上一连发布了七项生成式AI创新,涵盖了从底层硬件到工具、软件、再到生态的全方位更新,成为它在该领域迄今最全面的一次升级展示,同时也进一步降低了生成式AI的使用门槛。 亚马逊云科技凭借自身端到…...
图片等比例显示全部,兼容不同宽高比例图片
功能描述:预览瀑布流图片 点击预览不同的尺寸图片 <!-- 预览页面 --><div class"sea"><img :src"seaobj.url" alt""></div> .sea {z-index: 100;position: fixed;top: 0;text-align: center;background-colo…...
·[K8S:使用calico网络插件]:解决集群节点NotReady问题
文章目录 一:安装calico:1.1:weget安装Colico网络通信插件:1.2:修改calico.yaml网卡相关配置:1.2.1:查看本机ip 网卡相关信息:1.2.2:修改calico.yaml网卡interface相关信…...
泊松损坏图像的快速尺度间小波去噪研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
服务器端开发-golang dlv 远程调试
1。需要root权限的服务器代码调试 sudo ./appps to get piddlv attach pid --headless --listen:40000 --api-version2 --accept-multiclientattach the golang IDE or other IDE 2。不需要root权限的服务器代码调试,另一种选择 dlv --listen:40000 --headlesstr…...
STM32F103——时钟配置
目录 1、认识时钟树 1.1 什么是时钟树 1.2 时钟系统解析 1.2.1 时钟源 1.2.2 锁相环PLL 1.2.3 系统时钟SYSCLK 1.2.4 时钟信号输出MCO 2、如何修改主频 2.1 STM32F1时钟系统配置 2.2 STM32F1 时钟使能和配置 下列进行举例的开发板是原子哥的战舰开发板STM32F103ZET…...
【Linux】信号捕捉
目录 信号捕捉1.用户态与内核态1.1关于内核空间与内核态:1.2关于用户态与内核态的表征: 2.信号捕捉过程 信号捕捉 1.用户态与内核态 用户态:执行用户代码时,进程的状态 内核态:执行OS代码时,进程的状态 …...
超详情的开源知识库管理系统- mm-wiki的安装和使用
背景:最近公司需要一款可以记录公司内部文档信息,一些只是累计等,通过之前的经验积累,立马想到了 mm-wiki,然后就给公司搭建了一套,分享一下安装和使用说明: 当前市场上众多的优秀的文档系统百…...
安卓:UDP通信
目录 一、介绍 网络通信的三要素: (1)、IP地址: IPv4: IPv6: IP地址形式: IP常用命令: IP地址操作类: (2)、端口: (3)、协议: UDP协…...
clickhouse安装
clickhouse安装 在线安装和离线安装 一、环境准备: 1.检查系统是否支持clickhouse安装 (向量化支持) grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.” 2.下载对应的clickhouse包 复制运行之后,就会将对应的包加入…...
Cpp学习——string(2)
目录 编辑 容器string中的一些函数 1.capacity() 2.reserve() 3.resize() 4.push_back()与append() 5.find系列函数 容器string中的一些函数 1.capacity() capacity是string当中表示容量大小的函数。但是string开空间时是如何开的呢?现在就来看一下。先写…...
python进阶编程
lambda匿名函数 python使用lambda表达式来创建匿名函数 语法 // lambda 参数们:对参数的处理 lambda x : 2 * x // x 是参数, 2*x 是返回值 //使用lambda实现求和 sum lambda arg1, arg2 : agr1 arg2 print(sum(10,20)) // 将匿名函数封装在一…...
算法练习--leetcode 链表
文章目录 合并两个有序链表删除排序链表中的重复元素 1删除排序链表中的重复元素 2环形链表1环形链表2相交链表反转链表 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入&…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
