Godot Version
4.6 (and earlier?)
Question
I have some GpuParticles3D. They emit particles at a certain speed and make use of gravity and dampening.
But when I change scale on the parent node, the particles are moving with different speed which totally changes behavior of the particles. This is annoying since I develop the particles in the editor where they have scale=1 per default and later in the game I attach the particles to a node where they are subject to its parent scale.
example of a particles scene:
[gd_scene format=3 uid=“uid://b2fqgg4l7iwt7”]
[ext_resource type=“Texture2D” uid=“uid://s73qtovfs64o” path=“res://particles/smoke1.png” id=“1_kuycf”]
[ext_resource type=“Script” uid=“uid://bhhm6k2brglsf” path=“res://particles/Exhaust.cs” id=“2_vv4mb”]
[sub_resource type=“Gradient” id=“Gradient_xo2y5”]
colors = PackedColorArray(0.51323307, 0.51323295, 0.51323247, 1, 1, 1, 1, 1)
[sub_resource type=“GradientTexture1D” id=“GradientTexture1D_6iem6”]
gradient = SubResource(“Gradient_xo2y5”)
[sub_resource type=“Gradient” id=“Gradient_vv4mb”]
offsets = PackedFloat32Array(0, 0.98917747)
colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1)
[sub_resource type=“GradientTexture1D” id=“GradientTexture1D_xo2y5”]
gradient = SubResource(“Gradient_vv4mb”)
[sub_resource type=“Curve” id=“Curve_aqk2v”]
_limits = [1.0, 10.0, 0.0, 1.0]
_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 10), 0.0, 0.0, 0, 0]
point_count = 2
[sub_resource type=“CurveTexture” id=“CurveTexture_6ijnk”]
curve = SubResource(“Curve_aqk2v”)
[sub_resource type=“ParticleProcessMaterial” id=“ParticleProcessMaterial_7snif”]
lifetime_randomness = 0.02
angle_min = 1.0728835e-05
angle_max = 360.00003
direction = Vector3(0, 0, 0)
spread = 0.1
initial_velocity_min = 6.0
initial_velocity_max = 6.0
angular_velocity_min = -10.000016
angular_velocity_max = 9.999984
gravity = Vector3(0, 0.1, 0)
damping_min = 2.0
damping_max = 2.0
scale_min = 0.07
scale_max = 0.14999999
scale_curve = SubResource(“CurveTexture_6ijnk”)
color_ramp = SubResource(“GradientTexture1D_xo2y5”)
color_initial_ramp = SubResource(“GradientTexture1D_6iem6”)
[sub_resource type=“StandardMaterial3D” id=“StandardMaterial3D_036b0”]
transparency = 1
cull_mode = 2
vertex_color_use_as_albedo = true
albedo_texture = ExtResource(“1_kuycf”)
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type=“QuadMesh” id=“QuadMesh_dwbse”]
material = SubResource(“StandardMaterial3D_036b0”)
[node name=“CPUParticles3D” type=“GPUParticles3D” unique_id=469891724]
cast_shadow = 0
amount = 15
explosiveness = 0.05
randomness = 1.0
process_material = SubResource(“ParticleProcessMaterial_7snif”)
draw_pass_1 = SubResource(“QuadMesh_dwbse”)
script = ExtResource(“2_vv4mb”)