[gd_scene load_steps=11 format=2] [ext_resource path="res://assets/Enemies/goblin_spritesheet.png" type="Texture" id=1] [ext_resource path="res://src/Actors/Goblin.gd" type="Script" id=2] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 6, 8 ) [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 7, 9 ) [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 35, 10 ) [sub_resource type="Animation" id=4] resource_name = "attack" length = 0.3 loop = true tracks/0/type = "value" tracks/0/path = NodePath("CollisionShape2D:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, "values": [ 8, 9, 10, 11 ] } tracks/3/type = "value" tracks/3/path = NodePath("Sprite:vframes") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 5 ] } tracks/4/type = "value" tracks/4/path = NodePath("Sprite:hframes") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 4 ] } tracks/5/type = "value" tracks/5/path = NodePath("CollisionShape2D:shape:extents") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 6, 8 ) ] } tracks/6/type = "value" tracks/6/path = NodePath("CollisionShape2D:disabled") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=5] length = 0.5 loop = true tracks/0/type = "value" tracks/0/path = NodePath("CollisionShape2D:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ 6, 7, 8, 9, 10, 11 ] } tracks/3/type = "value" tracks/3/path = NodePath("Sprite:vframes") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 5 ] } tracks/4/type = "value" tracks/4/path = NodePath("Sprite:hframes") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 6 ] } tracks/5/type = "value" tracks/5/path = NodePath("CollisionShape2D:shape:extents") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 6, 8 ) ] } tracks/6/type = "value" tracks/6/path = NodePath("CollisionShape2D:disabled") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ true ] } tracks/7/type = "method" tracks/7/path = NodePath(".") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 0.5 ), "transitions": PoolRealArray( 1 ), "values": [ { "args": [ ], "method": "queue_free" } ] } [sub_resource type="Animation" id=6] resource_name = "hit" length = 0.2 tracks/0/type = "value" tracks/0/path = NodePath("CollisionShape2D:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:scale") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 1, 1 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/3/type = "value" tracks/3/path = NodePath("Sprite:frame") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0, 0.1, 0.2 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 1, "values": [ 24, 25, 26 ] } tracks/4/type = "value" tracks/4/path = NodePath("Sprite:vframes") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 5 ] } tracks/5/type = "value" tracks/5/path = NodePath("Sprite:hframes") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 6 ] } tracks/6/type = "value" tracks/6/path = NodePath("CollisionShape2D:shape:extents") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 6, 8 ) ] } tracks/7/type = "value" tracks/7/path = NodePath("CollisionShape2D:disabled") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } tracks/8/type = "method" tracks/8/path = NodePath(".") tracks/8/interp = 1 tracks/8/loop_wrap = true tracks/8/imported = false tracks/8/enabled = true tracks/8/keys = { "times": PoolRealArray( 0.2 ), "transitions": PoolRealArray( 1 ), "values": [ { "args": [ ], "method": "on_animation_hit_ended" } ] } [sub_resource type="Animation" id=7] length = 0.3 loop = true tracks/0/type = "value" tracks/0/path = NodePath("CollisionShape2D:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:scale") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 1, 1 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/3/type = "value" tracks/3/path = NodePath("Sprite:frame") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, "values": [ 18, 19, 20, 21 ] } tracks/4/type = "value" tracks/4/path = NodePath("Sprite:vframes") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 5 ] } tracks/5/type = "value" tracks/5/path = NodePath("Sprite:hframes") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 6 ] } tracks/6/type = "value" tracks/6/path = NodePath("CollisionShape2D:shape:extents") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 6, 8 ) ] } tracks/7/type = "value" tracks/7/path = NodePath("CollisionShape2D:disabled") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/imported = false tracks/7/enabled = true tracks/7/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [sub_resource type="Animation" id=8] length = 0.5 loop = true tracks/0/type = "value" tracks/0/path = NodePath("CollisionShape2D:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/1/type = "value" tracks/1/path = NodePath("Sprite:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 0, -8 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Sprite:frame") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), "update": 1, "values": [ 0, 1, 2, 3, 4, 5 ] } tracks/3/type = "value" tracks/3/path = NodePath("Sprite:vframes") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 5 ] } tracks/4/type = "value" tracks/4/path = NodePath("Sprite:hframes") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ 6 ] } tracks/5/type = "value" tracks/5/path = NodePath("CollisionShape2D:shape:extents") tracks/5/interp = 1 tracks/5/loop_wrap = true tracks/5/imported = false tracks/5/enabled = true tracks/5/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ Vector2( 6, 8 ) ] } tracks/6/type = "value" tracks/6/path = NodePath("CollisionShape2D:disabled") tracks/6/interp = 1 tracks/6/loop_wrap = true tracks/6/imported = false tracks/6/enabled = true tracks/6/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, "values": [ false ] } [node name="Goblin" type="KinematicBody2D"] light_mask = 2 collision_layer = 2147483650 collision_mask = 15 script = ExtResource( 2 ) num_of_hits = 3 walking_speed = 20.0 attack_cool_down = 0.1 patroler = true idle_interval = 0.5 idle_time = 0.2 dont_fall_patrol = true gravity = 500.0 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] visible = false position = Vector2( 0, -8 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] visible = false collision_layer = 2 [node name="DamageArea" type="CollisionShape2D" parent="Area2D"] position = Vector2( 0, -8 ) shape = SubResource( 2 ) [node name="TriggerZone" type="Area2D" parent="."] visible = false [node name="CollisionShape2D" type="CollisionShape2D" parent="TriggerZone"] position = Vector2( 0, -6 ) shape = SubResource( 3 ) [node name="Sprite" type="Sprite" parent="."] position = Vector2( 0, -8 ) texture = ExtResource( 1 ) vframes = 5 hframes = 4 frame = 8 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "idle" anims/attack = SubResource( 4 ) anims/die = SubResource( 5 ) anims/hit = SubResource( 6 ) anims/idle = SubResource( 7 ) anims/walk = SubResource( 8 ) [node name="RayCastLeft" type="RayCast2D" parent="."] visible = false position = Vector2( -6, 0 ) enabled = true cast_to = Vector2( 0, 1 ) collision_mask = 8 [node name="RayCastRight" type="RayCast2D" parent="."] visible = false position = Vector2( 6, 0 ) enabled = true cast_to = Vector2( 0, 1 ) collision_mask = 12 collide_with_areas = true [connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] [connection signal="body_entered" from="TriggerZone" to="." method="_on_TriggerZone_body_entered"] [connection signal="body_exited" from="TriggerZone" to="." method="_on_TriggerZone_body_exited"]