Added enemy health and damage
This commit is contained in:
parent
2b0f292f8b
commit
81e3f67ff2
|
@ -21,6 +21,10 @@ window/size/viewport_width=384
|
|||
window/size/viewport_height=256
|
||||
window/stretch/mode="viewport"
|
||||
|
||||
[global_group]
|
||||
|
||||
damageable=""
|
||||
|
||||
[input]
|
||||
|
||||
left={
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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"]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"]
|
||||
|
||||
|
|
Loading…
Reference in a new issue