fuzzyworld

godot-shooter / commit

Make enemy-player collisions do damage to the player and destroy the enemy.

115aa5d1fede4d9df0a666c85764ea0e9181e0c7 · Pavel Safronov · 2023-11-06 17:33:02 -0800 · parents 09bbefe0e9a6

Make enemy-player collisions do damage to the player and destroy the enemy.
 Enemy.gd   | 12 ++++++++++++
 Enemy.tscn | 13 ++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/Enemy.gd b/Enemy.gd
index 5360bd4..15ac29c 100644
--- a/Enemy.gd
+++ b/Enemy.gd
@@ -93,3 +93,15 @@ func get_damage_point_on_body() -> Vector2:
 
 func remove_thyself():
 	queue_free()
+
+func _on_Area2D_body_entered(body: Node) -> void:
+	var players = get_tree().get_nodes_in_group("player")
+	var player: Player = players[0]
+	var is_player = body == player
+	if is_player:
+		player.hurt(2)
+		var explosion = Explosion.instance()
+		explosion.transform = transform
+		get_parent().add_child(explosion)
+		kill()
+
diff --git a/Enemy.tscn b/Enemy.tscn
index 0df69a1..0415eef 100644
--- a/Enemy.tscn
+++ b/Enemy.tscn
@@ -61,9 +61,6 @@ text = "HEALTH"
 modulate = Color( 1, 0, 0, 1 )
 texture = ExtResource( 3 )
 
-[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
-polygon = PoolVector2Array( 0, -23, -7, 5, -12, 9, -19, 9, -23, 14, -23, 19, -19, 23, -14, 23, -9, 19, -9, 14, -10, 12, -6, 9, 0, 15, 6, 9, 10, 12, 9, 14, 9, 19, 13, 23, 18, 23, 23, 18, 23, 14, 19, 10, 13, 10, 7, 5 )
-
 [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
 anims/RESET = SubResource( 1 )
 anims/fade_out = SubResource( 2 )
@@ -82,3 +79,13 @@ position = Vector2( 16, 16 )
 [node name="RayCast2D" type="RayCast2D" parent="."]
 enabled = true
 cast_to = Vector2( 0, -50 )
+
+[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
+polygon = PoolVector2Array( 0, -23, -7, 5, -12, 9, -19, 9, -23, 14, -23, 19, -19, 23, -14, 23, -9, 19, -9, 14, -10, 12, -6, 9, 0, 15, 6, 9, 10, 12, 9, 14, 9, 19, 13, 23, 18, 23, 23, 18, 23, 14, 19, 10, 13, 10, 7, 5 )
+
+[node name="Area2D" type="Area2D" parent="."]
+
+[node name="CollisionPolygon2D2" type="CollisionPolygon2D" parent="Area2D"]
+polygon = PoolVector2Array( 0, -23, -7, 5, -12, 9, -19, 9, -23, 14, -23, 19, -19, 23, -14, 23, -9, 19, -9, 14, -10, 12, -6, 9, 0, 15, 6, 9, 10, 12, 9, 14, 9, 19, 13, 23, 18, 23, 23, 18, 23, 14, 19, 10, 13, 10, 7, 5 )
+
+[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"]