create explosion gpu particle

pull/8/head
Sascha 2023-10-22 09:41:09 +07:00
parent ca381d19eb
commit 08c7d9ea12
8 changed files with 51 additions and 14 deletions

@ -0,0 +1,6 @@
<Project Sdk="Godot.NET.Sdk/4.2.0-dev.6">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://6dn1gjqffnt"]
[gd_scene load_steps=11 format=3 uid="uid://6dn1gjqffnt"]
[ext_resource type="Script" path="res://Scripts/Asteroid.cs" id="1_ygr21"]
[ext_resource type="Texture2D" uid="uid://bt2aj3hcmb87q" path="res://Textures/prop_asteroid_01_dff.png" id="1_yruod"]
@ -52,11 +52,16 @@ normal_enabled = true
normal_scale = 2.0
normal_texture = ExtResource("2_xbjvi")
[node name="Asteroid_01" type="Node3D" node_paths=PackedStringArray("asteroidRb", "asteroidMesh")]
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_615d1"]
[sub_resource type="SphereMesh" id="SphereMesh_28y08"]
[node name="Asteroid_01" type="Node3D" node_paths=PackedStringArray("asteroidRb", "asteroidMesh", "explosion")]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
script = ExtResource("1_ygr21")
asteroidRb = NodePath("RigidBody3D")
asteroidMesh = NodePath("RigidBody3D/CollisionShape3D/prop_asteroid_01")
asteroidMesh = NodePath("RigidBody3D/prop_asteroid_01")
explosion = NodePath("RigidBody3D/Explosion")
[node name="RigidBody3D" type="RigidBody3D" parent="."]
gravity_scale = 0.0
@ -64,8 +69,13 @@ gravity_scale = 0.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
shape = SubResource("SphereShape3D_leouh")
[node name="prop_asteroid_01" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"]
[node name="prop_asteroid_01" type="MeshInstance3D" parent="RigidBody3D"]
transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0)
mesh = SubResource("ArrayMesh_rks3f")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_32257")
[node name="Explosion" type="GPUParticles3D" parent="RigidBody3D"]
emitting = false
process_material = SubResource("ParticleProcessMaterial_615d1")
draw_pass_1 = SubResource("SphereMesh_28y08")

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://cvlxm2yrohsca"]
[gd_scene load_steps=11 format=3 uid="uid://cvlxm2yrohsca"]
[ext_resource type="Texture2D" uid="uid://c48y5hkprbmre" path="res://Textures/prop_asteroid_02_dff.png" id="1_hvwuc"]
[ext_resource type="Script" path="res://Scripts/Asteroid.cs" id="1_vm3mg"]
@ -7,6 +7,10 @@
[sub_resource type="SphereShape3D" id="SphereShape3D_f4akn"]
radius = 0.715
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_eput4"]
[sub_resource type="SphereMesh" id="SphereMesh_p3hrp"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n7ttt"]
resource_name = "prop_asteroid_02_mat"
metallic = 0.4
@ -52,11 +56,12 @@ normal_enabled = true
normal_scale = 2.0
normal_texture = ExtResource("2_qs4n0")
[node name="Asteroid_02" type="Node3D" node_paths=PackedStringArray("asteroidRb", "asteroidMesh")]
[node name="Asteroid_02" type="Node3D" node_paths=PackedStringArray("asteroidRb", "asteroidMesh", "explosion")]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
script = ExtResource("1_vm3mg")
asteroidRb = NodePath("RigidBody3D")
asteroidMesh = NodePath("RigidBody3D/CollisionShape3D/prop_asteroid_02")
asteroidMesh = NodePath("RigidBody3D/prop_asteroid_02")
explosion = NodePath("RigidBody3D/Explosion")
[node name="RigidBody3D" type="RigidBody3D" parent="."]
gravity_scale = 0.0
@ -64,7 +69,12 @@ gravity_scale = 0.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
shape = SubResource("SphereShape3D_f4akn")
[node name="prop_asteroid_02" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"]
[node name="Explosion" type="GPUParticles3D" parent="RigidBody3D"]
emitting = false
process_material = SubResource("ParticleProcessMaterial_eput4")
draw_pass_1 = SubResource("SphereMesh_p3hrp")
[node name="prop_asteroid_02" type="MeshInstance3D" parent="RigidBody3D"]
transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0)
mesh = SubResource("ArrayMesh_jk0jt")
skeleton = NodePath("")

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://brqqgidqchi88"]
[gd_scene load_steps=11 format=3 uid="uid://brqqgidqchi88"]
[ext_resource type="Script" path="res://Scripts/Asteroid.cs" id="1_ph38x"]
[ext_resource type="Texture2D" uid="uid://4sc40fjd4myy" path="res://Textures/prop_asteroid_03_dff.png" id="1_wdgmr"]
@ -7,6 +7,10 @@
[sub_resource type="SphereShape3D" id="SphereShape3D_iq8kl"]
radius = 0.847
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_6ipvl"]
[sub_resource type="SphereMesh" id="SphereMesh_1s5ky"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pvmxy"]
resource_name = "prop_asteroid_03_mat"
metallic = 0.4
@ -52,11 +56,12 @@ normal_enabled = true
normal_scale = 2.0
normal_texture = ExtResource("2_5yqc5")
[node name="Asteroid_03" type="Node3D" node_paths=PackedStringArray("asteroidRb", "asteroidMesh")]
[node name="Asteroid_03" type="Node3D" node_paths=PackedStringArray("asteroidRb", "asteroidMesh", "explosion")]
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
script = ExtResource("1_ph38x")
asteroidRb = NodePath("RigidBody3D")
asteroidMesh = NodePath("RigidBody3D/CollisionShape3D/prop_asteroid_03")
asteroidMesh = NodePath("RigidBody3D/prop_asteroid_03")
explosion = NodePath("RigidBody3D/Explosion")
[node name="RigidBody3D" type="RigidBody3D" parent="."]
gravity_scale = 0.0
@ -64,7 +69,12 @@ gravity_scale = 0.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="RigidBody3D"]
shape = SubResource("SphereShape3D_iq8kl")
[node name="prop_asteroid_03" type="MeshInstance3D" parent="RigidBody3D/CollisionShape3D"]
[node name="Explosion" type="GPUParticles3D" parent="RigidBody3D"]
emitting = false
process_material = SubResource("ParticleProcessMaterial_6ipvl")
draw_pass_1 = SubResource("SphereMesh_1s5ky")
[node name="prop_asteroid_03" type="MeshInstance3D" parent="RigidBody3D"]
mesh = SubResource("ArrayMesh_rnkma")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_mggxn")

@ -36,6 +36,7 @@ script = ExtResource("3_imgbw")
[node name="BackgroundMusic" type="AudioStreamPlayer" parent="."]
stream = ExtResource("8_4ms0p")
volume_db = -20.0
autoplay = true
[node name="GameManager" type="Node" parent="." node_paths=PackedStringArray("labelAsteroids", "labelLifes")]
script = ExtResource("9_rsrr5")

@ -46,7 +46,7 @@ public partial class Asteroid : Node3D {
}
}
private void Explode() {
public void Explode() {
explosion.Emitting = true;
QueueFree();
}

@ -5,7 +5,7 @@ namespace Scripts;
public partial class GameManager : Node
{
[Export] private Array<PackedScene> asteroids;
[Export] private float spawnRate = 0.1f;
[Export] private float spawnRate = 1f;
private float spawnTimer;