演示项目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
这个教程有点意思,不说话,放点背景音乐加一些步骤文字说明,我试了下,还有效果。记录一下
点击ParticleProcessMaterial进行进一步设置。先设置重力方向向上(y = -98),则开始向上喷射
# 为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
与视频中有偏差,原因在于纹理素材。
与前面大同小异,不用纹理,控制方向颜色及scale等即可。
现在回头看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引擎把后续的事做了。