diff options
-rw-r--r-- | assets/tilemap.png | bin | 25227 -> 25276 bytes | |||
-rw-r--r-- | assets/tilemap.xcf | bin | 224101 -> 225948 bytes | |||
-rw-r--r-- | scenes/defenders/warlock.gd | 5 | ||||
-rw-r--r-- | scenes/defenders/warlock.tscn | 11 | ||||
-rw-r--r-- | scenes/defenders/warlock_animator.gd | 18 | ||||
-rw-r--r-- | scenes/defenders/warlock_animator.gd.uid | 1 | ||||
-rw-r--r-- | scenes/defenders/warlock_projectile.gd | 3 |
7 files changed, 30 insertions, 8 deletions
diff --git a/assets/tilemap.png b/assets/tilemap.png Binary files differindex 1476bc1..6cf523b 100644 --- a/assets/tilemap.png +++ b/assets/tilemap.png diff --git a/assets/tilemap.xcf b/assets/tilemap.xcf Binary files differindex afaa9e8..76df246 100644 --- a/assets/tilemap.xcf +++ b/assets/tilemap.xcf diff --git a/scenes/defenders/warlock.gd b/scenes/defenders/warlock.gd index de83f39..b8d143b 100644 --- a/scenes/defenders/warlock.gd +++ b/scenes/defenders/warlock.gd @@ -2,6 +2,7 @@ extends StaticBody2D @export var projectile_damage = 5 +@onready var sprite_node = $Sprite2D var projectile = preload("res://scenes/defenders/warlock_projectile.tscn") var path_name @@ -23,9 +24,13 @@ func select_target(targets): func _on_tower_body_entered(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) + sprite_node.is_idle = true if (path_name == null) else false + sprite_node.update_texture() func _on_tower_body_exited(_body: Node2D): select_target(get_node("Tower").get_overlapping_bodies()) + sprite_node.is_idle = true if (path_name == null) else false + sprite_node.update_texture() func _on_fire_rate_timeout(): if (path_name != null): diff --git a/scenes/defenders/warlock.tscn b/scenes/defenders/warlock.tscn index 47b760a..3ab694d 100644 --- a/scenes/defenders/warlock.tscn +++ b/scenes/defenders/warlock.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=5 format=3 uid="uid://d27cf3jwfvbqu"] [ext_resource type="Script" uid="uid://dvhqpgw6vhayu" path="res://scenes/defenders/warlock.gd" id="1_rpypk"] -[ext_resource type="Texture2D" uid="uid://di2vybjsniag4" path="res://assets/tilemap.png" id="1_wu3n4"] +[ext_resource type="Script" uid="uid://6i27kmcpl7ix" path="res://scenes/defenders/warlock_animator.gd" id="2_rpypk"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_wu3n4"] size = Vector2(16, 16) @@ -26,14 +26,13 @@ shape = SubResource("CircleShape2D_rpypk") [node name="ProjectileContainer" type="Node" parent="."] -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("1_wu3n4") -region_enabled = true -region_rect = Rect2(496, 16, 16, 16) - [node name="FireRate" type="Timer" parent="."] autostart = true +[node name="Sprite2D" type="Sprite2D" parent="."] +region_rect = Rect2(496, 16, 16, 16) +script = ExtResource("2_rpypk") + [connection signal="body_entered" from="Tower" to="." method="_on_tower_body_entered"] [connection signal="body_exited" from="Tower" to="." method="_on_tower_body_exited"] [connection signal="timeout" from="FireRate" to="." method="_on_fire_rate_timeout"] diff --git a/scenes/defenders/warlock_animator.gd b/scenes/defenders/warlock_animator.gd new file mode 100644 index 0000000..be14337 --- /dev/null +++ b/scenes/defenders/warlock_animator.gd @@ -0,0 +1,18 @@ +extends Sprite2D + +@onready var tile_map = preload("res://assets/tilemap.png") + +var idle = Rect2(496, 16, 16, 16) +var attack = Rect2(496, 32, 16, 16) + +var is_idle = true + +func _ready(): + update_texture() + +func update_texture(): + var atlas_texture = AtlasTexture.new() + atlas_texture.atlas = tile_map + atlas_texture.region = idle if is_idle else attack + texture = atlas_texture + print(atlas_texture.region) diff --git a/scenes/defenders/warlock_animator.gd.uid b/scenes/defenders/warlock_animator.gd.uid new file mode 100644 index 0000000..4fa3cf7 --- /dev/null +++ b/scenes/defenders/warlock_animator.gd.uid @@ -0,0 +1 @@ +uid://6i27kmcpl7ix diff --git a/scenes/defenders/warlock_projectile.gd b/scenes/defenders/warlock_projectile.gd index 0a1cff4..2757019 100644 --- a/scenes/defenders/warlock_projectile.gd +++ b/scenes/defenders/warlock_projectile.gd @@ -20,8 +20,7 @@ func _physics_process(_delta: float): look_at(target) move_and_slide() - func _on_area_2d_body_entered(body: Node2D): - if "CrawlerSoldier" in body.name: + if "Crawler" in body.name: body.health -= projectile_damage queue_free() |