Added enemy health and damage

This commit is contained in:
termite 2025-04-26 18:11:40 -07:00
parent 2b0f292f8b
commit 81e3f67ff2
6 changed files with 57 additions and 7 deletions

View file

@ -21,6 +21,10 @@ window/size/viewport_width=384
window/size/viewport_height=256
window/stretch/mode="viewport"
[global_group]
damageable=""
[input]
left={

View file

@ -7,8 +7,17 @@ var direction = 0
var damage
var hostile = false
@onready var polygon = $Polygon2D
func _physics_process(delta: float) -> void:
position += speed*delta*base_speed*direction
if position.x < 0 or position.x > 256 or position.y < 0 or position.y > 256:
queue_free()
func _on_body_entered(body: Node2D) -> void:
if body.is_in_group("damageable"):
damage = body.damage(damage)
if damage <= 0:
queue_free()

View file

@ -13,5 +13,7 @@ position = Vector2(0.5, 0.5)
shape = SubResource("RectangleShape2D_83itf")
[node name="Polygon2D" type="Polygon2D" parent="."]
color = Color(0.772549, 0.411765, 0.505882, 1)
color = Color(0.329412, 0.360784, 0.494118, 1)
polygon = PackedVector2Array(1, 0, 0, 0, 0, 1, 1, 1)
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

View file

@ -2,10 +2,27 @@ extends Node2D
var speed = 10
var health = 30
var total_health = 30
var dead = false
@export var player : CharacterBody2D
@onready var navigation : NavigationAgent2D = $NavigationAgent2D
@onready var health_bar : ProgressBar = $HealthBar
func _physics_process(delta: float) -> void:
navigation.target_position = player.positiond
health_bar.value = (float(health)/total_health)*100
navigation.target_position = player.position
position = position.move_toward(navigation.get_next_path_position(), delta*speed)
if dead:
queue_free()
func damage(damage : int):
health -= damage
if health <= 0:
dead = true
return -health
return 0

View file

@ -1,11 +1,20 @@
[gd_scene load_steps=4 format=3 uid="uid://bnufqnypubedj"]
[gd_scene load_steps=7 format=3 uid="uid://bnufqnypubedj"]
[ext_resource type="Script" uid="uid://do2o6v238umse" path="res://scenes/enemies/enemy.gd" id="1_y73h6"]
[ext_resource type="Texture2D" uid="uid://nj5tjjv0a6v8" path="res://scenes/enemies/grunt/grunt.png" id="2_668pk"]
[sub_resource type="CircleShape2D" id="CircleShape2D_cahuy"]
[node name="Grunt" type="Area2D"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_y73h6"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_668pk"]
bg_color = Color(0.772549, 0.411765, 0.505882, 1)
[sub_resource type="Theme" id="Theme_cahuy"]
ProgressBar/styles/background = SubResource("StyleBoxFlat_y73h6")
ProgressBar/styles/fill = SubResource("StyleBoxFlat_668pk")
[node name="Grunt" type="AnimatableBody2D" groups=["damageable"]]
script = ExtResource("1_y73h6")
[node name="NavigationAgent2D" type="NavigationAgent2D" parent="."]
@ -21,3 +30,12 @@ shape = SubResource("CircleShape2D_cahuy")
[node name="NavigationObstacle2D" type="NavigationObstacle2D" parent="."]
radius = 10.0
avoidance_enabled = false
[node name="HealthBar" type="ProgressBar" parent="."]
offset_left = -10.0
offset_top = -17.0
offset_right = 11.0
offset_bottom = -15.0
theme = SubResource("Theme_cahuy")
value = 100.0
show_percentage = false

View file

@ -5,9 +5,9 @@
[ext_resource type="PackedScene" uid="uid://bnufqnypubedj" path="res://scenes/enemies/grunt/grunt.tscn" id="3_1fp7r"]
[sub_resource type="NavigationPolygon" id="NavigationPolygon_6m72w"]
vertices = PackedVector2Array(230, 25.5312, 230, 244.82, 19.25, 241.148, 1.75781, 20.2891, 50.1172, 17.0078)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3, 4)])
outlines = Array[PackedVector2Array]([PackedVector2Array(50, 7, 240, 16, 240, 255, 10, 251, -9, 11)])
vertices = PackedVector2Array(248, 10.9219, 248, 246.031, 8.07031, 246.961, 9.92188, 9.07031)
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
outlines = Array[PackedVector2Array]([PackedVector2Array(258, 1, 258, 256, -2, 257, 0, -1)])
[node name="World" type="Node2D"]