diff --git a/Scenes/Enemy.tscn b/Scenes/Enemy.tscn index 791e29b8..ddc83153 100644 --- a/Scenes/Enemy.tscn +++ b/Scenes/Enemy.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://v8s3kubgb2qg"] +[gd_scene load_steps=10 format=3 uid="uid://v8s3kubgb2qg"] [ext_resource type="Texture2D" uid="uid://b4ynnb14mb4uq" path="res://Sprites/Reisen.png" id="1_4w8mj"] [ext_resource type="Script" path="res://Scripts/Enemy.cs" id="1_lpwdj"] @@ -18,6 +18,9 @@ radius = 4.0 [sub_resource type="CircleShape2D" id="CircleShape2D_v711r"] radius = 85.0529 +[sub_resource type="RectangleShape2D" id="RectangleShape2D_m1rsg"] +size = Vector2(8, 12) + [node name="Enemy" type="CharacterBody2D" node_paths=PackedStringArray("EquippedWeapon") groups=["Destroyable"]] collision_layer = 16 collision_mask = 9 @@ -34,6 +37,7 @@ visible = false shape = SubResource("CircleShape2D_8gtts") [node name="RigidBody2D" type="RigidBody2D" parent="."] +collision_layer = 16 [node name="CollisionShape2D" type="CollisionShape2D" parent="RigidBody2D"] visible = false @@ -64,6 +68,14 @@ path_postprocessing = 1 debug_enabled = true debug_path_custom_color = Color(1, 0, 0, 1) +[node name="DamageHitbox" type="Area2D" parent="."] +collision_layer = 16 +collision_mask = 9 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageHitbox"] +shape = SubResource("RectangleShape2D_m1rsg") + [connection signal="area_entered" from="PlayerDetection" to="." method="_on_player_detection_area_entered"] [connection signal="area_exited" from="PlayerDetection" to="." method="_on_player_detection_area_exited"] [connection signal="velocity_computed" from="NavigationAgent2D" to="." method="_on_navigation_agent_2d_velocity_computed"] +[connection signal="area_entered" from="DamageHitbox" to="." method="_on_damage_hitbox_area_entered"] diff --git a/Scenes/Weapons/bullet.tscn b/Scenes/Weapons/bullet.tscn index 406565f9..982fff7e 100644 --- a/Scenes/Weapons/bullet.tscn +++ b/Scenes/Weapons/bullet.tscn @@ -11,6 +11,7 @@ collision_layer = 8 collision_mask = 85 script = ExtResource("1_jvxw3") Speed = 200.0 +Owner = 1 metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/Scenes/enemyBullet.tscn b/Scenes/enemyBullet.tscn index c46edfc7..e4ba4924 100644 --- a/Scenes/enemyBullet.tscn +++ b/Scenes/enemyBullet.tscn @@ -11,6 +11,7 @@ collision_layer = 128 collision_mask = 71 script = ExtResource("1_s0j1e") Speed = 200.0 +Owner = 2 metadata/_edit_group_ = true [node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/Scripts/Bullet.cs b/Scripts/Bullet.cs index d918b4b4..bcae18ea 100644 --- a/Scripts/Bullet.cs +++ b/Scripts/Bullet.cs @@ -9,6 +9,9 @@ public partial class Bullet : Area2D [Export] public float Damage = 1f; + + [Export] + public BulletOwner Owner = BulletOwner.None; private Vector2 _direction = Vector2.Right; @@ -87,3 +90,10 @@ public partial class Bullet : Area2D } } } + +public enum BulletOwner +{ + None, + Player, + Enemy +} diff --git a/Scripts/Enemy.cs b/Scripts/Enemy.cs index 6428c6e6..37dd2f0f 100644 --- a/Scripts/Enemy.cs +++ b/Scripts/Enemy.cs @@ -3,7 +3,7 @@ using Godot; using System; using System.Diagnostics; -public partial class Enemy : CharacterBody2D, IDestructible +public partial class Enemy : CharacterBody2D { private InteractionController _cachedPlayer; private EnemyState _currentState = EnemyState.Idle; @@ -190,6 +190,14 @@ public partial class Enemy : CharacterBody2D, IDestructible _currentState = EnemyState.Idle; } } + + private void _on_damage_hitbox_area_entered(Area2D area) + { + if (area is not Bullet bullet) return; + GD.Print("Enemy Received damage"); + this.Hit(bullet.Damage); + bullet.QueueFree(); + } // Bullets collision private void _on_area_entered(Area2D area)