Browse Source

:art: Add smoke effect on thruster

DricomDragon 1 year ago
parent
commit
434ab70b0a

+ 5 - 0
godot/effect/thrust/thrust_effect.gd

@@ -2,9 +2,14 @@ class_name ThrustEffect
 extends GPUParticles2D
 
 
+@onready var smoke_emitter: GPUParticles2D = $Smoke
+
+
 func _on_thrusted(power: float) -> void:
 	if power == 0.0 :
 		set_emitting(false)
+		smoke_emitter.set_emitting(false)
 	else :
 		set_emitting(true)
+		smoke_emitter.set_emitting(true)
 

+ 4 - 1
godot/effect/thrust/thruster_big.tscn

@@ -1,8 +1,9 @@
-[gd_scene load_steps=4 format=3 uid="uid://cm4nfeaf4e2rl"]
+[gd_scene load_steps=5 format=3 uid="uid://cm4nfeaf4e2rl"]
 
 [ext_resource type="Material" uid="uid://csleqiewg5ib3" path="res://effect/thrust/thrust_effect_process_material.tres" id="1_r8tw2"]
 [ext_resource type="Texture2D" uid="uid://b71okcm85d6iu" path="res://effect/thrust/thrust_line_big.png" id="2_v6j4h"]
 [ext_resource type="Script" path="res://effect/thrust/thrust_effect.gd" id="3_0sdig"]
+[ext_resource type="PackedScene" uid="uid://doag02a5hy01v" path="res://effect/trail/smoke.tscn" id="4_1ln0p"]
 
 [node name="BigThruster" type="GPUParticles2D"]
 position = Vector2(0, 60)
@@ -12,3 +13,5 @@ process_material = ExtResource("1_r8tw2")
 texture = ExtResource("2_v6j4h")
 local_coords = true
 script = ExtResource("3_0sdig")
+
+[node name="Smoke" parent="." instance=ExtResource("4_1ln0p")]

+ 4 - 1
godot/effect/thrust/thruster_small.tscn

@@ -1,8 +1,9 @@
-[gd_scene load_steps=4 format=3 uid="uid://cmg7vt5a3l51t"]
+[gd_scene load_steps=5 format=3 uid="uid://cmg7vt5a3l51t"]
 
 [ext_resource type="Material" uid="uid://csleqiewg5ib3" path="res://effect/thrust/thrust_effect_process_material.tres" id="1_rqrnh"]
 [ext_resource type="Texture2D" uid="uid://csx340uermmbn" path="res://effect/thrust/thrust_line_small.png" id="2_7kqpg"]
 [ext_resource type="Script" path="res://effect/thrust/thrust_effect.gd" id="3_0wnx8"]
+[ext_resource type="PackedScene" uid="uid://doag02a5hy01v" path="res://effect/trail/smoke.tscn" id="4_d7due"]
 
 [node name="SmallThruster" type="GPUParticles2D"]
 position = Vector2(0, 36)
@@ -12,3 +13,5 @@ process_material = ExtResource("1_rqrnh")
 texture = ExtResource("2_7kqpg")
 local_coords = true
 script = ExtResource("3_0wnx8")
+
+[node name="Smoke" parent="." instance=ExtResource("4_d7due")]

+ 43 - 0
godot/effect/trail/smoke.tscn

@@ -0,0 +1,43 @@
+[gd_scene load_steps=7 format=3 uid="uid://doag02a5hy01v"]
+
+[ext_resource type="Texture2D" uid="uid://dfjwcx4506cxo" path="res://effect/trail/trail_particle.png" id="1_u5kl5"]
+
+[sub_resource type="Gradient" id="Gradient_b352v"]
+colors = PackedColorArray(1, 1, 1, 1, 0.423529, 0.423529, 0.423529, 0)
+
+[sub_resource type="GradientTexture1D" id="GradientTexture1D_55fys"]
+gradient = SubResource("Gradient_b352v")
+
+[sub_resource type="Curve" id="Curve_b7yeu"]
+max_value = 10.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_hnf38"]
+curve = SubResource("Curve_b7yeu")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_wxrhy"]
+emission_shape = 1
+emission_sphere_radius = 4.0
+particle_flag_disable_z = true
+direction = Vector3(0, 1, 0)
+spread = 10.0
+gravity = Vector3(0, 0, 0)
+initial_velocity_min = 2800.0
+initial_velocity_max = 3000.0
+orbit_velocity_min = 0.0
+orbit_velocity_max = 0.0
+damping_min = 10000.0
+damping_max = 14000.0
+scale_max = 2.0
+scale_curve = SubResource("CurveTexture_hnf38")
+color = Color(0.521569, 0.898039, 1, 1)
+color_ramp = SubResource("GradientTexture1D_55fys")
+
+[node name="Smoke" type="GPUParticles2D"]
+z_index = -1
+position = Vector2(0, -60)
+emitting = false
+process_material = SubResource("ParticleProcessMaterial_wxrhy")
+texture = ExtResource("1_u5kl5")
+lifetime = 0.5