destructable objects extends item class

pull/2/head
Sascha 2024-06-12 12:53:45 +07:00
parent ee49a1515c
commit 79d0f07c99
8 changed files with 107 additions and 89 deletions

@ -102,20 +102,20 @@ height = 0.2
[node name="wall_cracked" type="Node3D"]
script = ExtResource("1_yso3r")
[node name="wall_cracked" type="MeshInstance3D" parent="."]
[node name="Mesh" type="MeshInstance3D" parent="."]
mesh = SubResource("ArrayMesh_t72su")
skeleton = NodePath("")
[node name="HurtBox" type="Area3D" parent="wall_cracked"]
[node name="HurtBox" type="Area3D" parent="Mesh"]
script = ExtResource("2_rn274")
[node name="CollisionShape3D" type="CollisionShape3D" parent="wall_cracked/HurtBox"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Mesh/HurtBox"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("SphereShape3D_adgbw")
[node name="StaticBody3D" type="StaticBody3D" parent="wall_cracked"]
[node name="StaticBody3D" type="StaticBody3D" parent="Mesh"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="wall_cracked/StaticBody3D"]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Mesh/StaticBody3D"]
shape = SubResource("ConvexPolygonShape3D_501sk")
[node name="Particles" type="GPUParticles3D" parent="."]
@ -128,7 +128,4 @@ draw_pass_1 = SubResource("SphereMesh_xv5hv")
[node name="SFX" type="AudioStreamPlayer3D" parent="."]
stream = ExtResource("4_6vgpt")
[node name="NavigationObstacle3D" type="NavigationObstacle3D" parent="."]
vertices = PackedVector3Array(-2.46155, 0, 1.06821, 3.10714, 0, 1.05349, 3.14176, 0, -1.04959, -2.80815, 0, -1.23494)
[connection signal="finished" from="Particles" to="." method="_on_particles_finished"]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -56,9 +56,10 @@ player = NodePath("../../Player")
[node name="Level" type="Node" parent="."]
[node name="NavigationManager" type="NavigationRegion3D" parent="Level"]
[node name="NavigationManager" type="NavigationRegion3D" parent="Level" node_paths=PackedStringArray("navigation_objects_node")]
navigation_mesh = SubResource("NavigationMesh_3mbqm")
script = ExtResource("6_hjfx0")
navigation_objects_node = NodePath("NavigationObjects")
[node name="Floors" type="GridMap" parent="Level/NavigationManager"]
mesh_library = ExtResource("7_pv7jr")
@ -75,43 +76,27 @@ data = {
}
metadata/_editor_floor_ = Vector3(0, 0, 0)
[node name="Items" type="Node" parent="Level/NavigationManager"]
[node name="NavigationObjects" type="Node" parent="Level/NavigationManager"]
[node name="torch_mounted" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.03394, 2.9024, 1.25148)
[node name="torch_mounted2" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.96606, 2.9024, 1.25148)
[node name="torch_mounted3" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.9661, 2.9024, 1.25148)
[node name="torch_mounted4" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 12.3832, 2.9024, 10.7441)
[node name="torch_mounted5" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1.38316, 2.9024, 10.7441)
[node name="torch_mounted6" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -6.61684, 2.9024, 10.7441)
[node name="wall_cracked" parent="Level/NavigationManager/NavigationObjects" instance=ExtResource("10_2s32u")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -12.8668, 1.06152, 6.36398)
item_name = "WallCracked1"
[node name="torch_mounted7" parent="Level/NavigationManager/Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -12.6168, 2.9024, 10.7441)
[node name="wall_cracked2" parent="Level/NavigationManager/NavigationObjects" instance=ExtResource("10_2s32u")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 33.0855, 1.06152, -8.94787)
item_name = "WallCracked2"
[node name="Chest" parent="Level/NavigationManager/Items" instance=ExtResource("12_ead6y")]
[node name="Chest1" parent="Level/NavigationManager/NavigationObjects" instance=ExtResource("12_ead6y")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -19.0017, 1.36992, -13.4815)
item_name = "Chest1"
[node name="Chest2" parent="Level/NavigationManager/Items" instance=ExtResource("12_ead6y")]
[node name="Chest2" parent="Level/NavigationManager/NavigationObjects" instance=ExtResource("12_ead6y")]
transform = Transform3D(-0.361299, 0, -0.93245, 0, 1, 0, 0.93245, 0, -0.361299, 46.7428, 1.38847, -3.1036)
item_name = "Chest2"
[node name="Chest3" parent="Level/NavigationManager/Items" instance=ExtResource("12_ead6y")]
[node name="Chest3" parent="Level/NavigationManager/NavigationObjects" instance=ExtResource("12_ead6y")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.5198, 1.06351, 0.974984)
[node name="wall_cracked" parent="Level/NavigationManager/Items" instance=ExtResource("10_2s32u")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -12.8668, 1.06152, 6.36398)
[node name="wall_cracked2" parent="Level/NavigationManager/Items" instance=ExtResource("10_2s32u")]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 33.0855, 1.06152, -8.94787)
item_name = "Chest3"
[node name="Enemies" type="Node" parent="." node_paths=PackedStringArray("player")]
script = ExtResource("11_137ne")
@ -137,5 +122,28 @@ bus = &"Music"
[node name="Voice" type="AudioStreamPlayer" parent="Audio"]
stream = ExtResource("14_765i1")
[node name="Items" type="Node" parent="."]
[node name="torch_mounted" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.03394, 2.9024, 1.25148)
[node name="torch_mounted2" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.96606, 2.9024, 1.25148)
[node name="torch_mounted3" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 13.9661, 2.9024, 1.25148)
[node name="torch_mounted4" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 12.3832, 2.9024, 10.7441)
[node name="torch_mounted5" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 1.38316, 2.9024, 10.7441)
[node name="torch_mounted6" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -6.61684, 2.9024, 10.7441)
[node name="torch_mounted7" parent="Items" instance=ExtResource("8_8d1n4")]
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -12.6168, 2.9024, 10.7441)
[connection signal="game_over" from="Player" to="Audio" method="_on_player_game_over"]
[connection signal="player_loaded" from="Player" to="GameManager" method="_on_player_player_loaded"]

@ -1,18 +1,23 @@
class_name DesctructableObject extends Node3D
@export var health := 10
class_name DesctructableObject extends Item
@onready var particles: GPUParticles3D = $Particles
@onready var wall_mesh: MeshInstance3D = $wall_cracked
@onready var mesh: MeshInstance3D = $Mesh
@onready var sfx: AudioStreamPlayer3D = $SFX
func take_damage(damage: int) -> void:
health -= damage
sfx.play()
if health <= 0:
particles.one_shot = true
particles.emitting = true
wall_mesh.queue_free()
func _ready() -> void:
particles.one_shot = true
state_changed.connect(_on_state_changed)
health_changed.connect(_on_health_changed)
func _on_particles_finished() -> void:
recalculate_navigation_map.emit(self)
queue_free()
func _on_state_changed(new_state: States) -> void:
match new_state:
States.destroyed:
particles.emitting = true
mesh.queue_free()
func _on_health_changed(health: int, max_health: int) -> void:
sfx.play()

@ -10,10 +10,10 @@ func _ready() -> void:
owner.name_changed.connect(update_name_text)
func update_health_bar (current_health: int, maximal_health: int) -> void:
health_bar.value = (100 / maximal_health) * current_health
health_bar.value = int((100 / maximal_health)) * current_health
func update_stamina_bar (current_stamina: int, maximal_stamina: int) -> void:
stamina_bar.value = (100 / maximal_stamina) * current_stamina
stamina_bar.value = int((100 / maximal_stamina)) * current_stamina
func update_name_text (enemy_name: String, current_state: String) -> void:
name_label.text = enemy_name + " (" + current_state + ")"

@ -1,7 +1,6 @@
class_name Item
extends Node3D
class_name Item extends Node3D
@export var unit_name: String
@export var item_name: String
@export var maximum_health := 10
@export var health := maximum_health
@ -22,12 +21,13 @@ enum States {
print("Item state " + str(state) + "...")
state_changed.emit(value)
signal name_changed(unit_name: String)
signal name_changed(item_name: String)
signal health_changed(current_health: int, maximum_health: int)
signal state_changed(new_state: States)
signal recalculate_navigation_map()
func _ready() -> void:
name_changed.emit(unit_name)
name_changed.emit(item_name)
health_changed.emit(health, maximum_health)
func take_damage(damage_amount: int) -> void:

@ -1,4 +1,12 @@
class_name NavigatioNManager extends NavigationRegion3D
class_name NavigationManager extends NavigationRegion3D
func _on_wall_cracked_recalculate_navigation_map() -> void:
map
@export var navigation_objects_node : Node
func _ready() -> void:
var navigation_objects = navigation_objects_node.get_children()
for navigation_object in navigation_objects:
navigation_object.recalculate_navigation_map.connect(_recalculate_navigation_map)
func _recalculate_navigation_map(requester : Item) -> void:
print(requester.item_name + " requests new nagivation mesh bake.")
bake_navigation_mesh()