got four-direction movement working

This commit is contained in:
Adam Burns 2026-01-19 23:04:02 -05:00
parent f9e52d23e5
commit 5c5c510a2a
12 changed files with 504 additions and 107 deletions

10
scenes/debug_layer.tscn Normal file
View File

@ -0,0 +1,10 @@
[gd_scene load_steps=2 format=3 uid="uid://dgotxye77b7mr"]
[ext_resource type="Script" uid="uid://dy34r8x6ofyaa" path="res://scripts/debug_layer.gd" id="1_tsu2q"]
[node name="DebugLayer" type="CanvasLayer"]
script = ExtResource("1_tsu2q")
[node name="VBoxContainer" type="VBoxContainer" parent="."]
offset_right = 40.0
offset_bottom = 40.0

View File

@ -2,7 +2,7 @@
[ext_resource type="Texture2D" uid="uid://2rxue54761co" path="res://assets/1_Terrains_and_Fences_16x16.png" id="1_0xm2m"] [ext_resource type="Texture2D" uid="uid://2rxue54761co" path="res://assets/1_Terrains_and_Fences_16x16.png" id="1_0xm2m"]
[ext_resource type="Texture2D" uid="uid://srv501khyvax" path="res://assets/2_City_Terrains_16x16.png" id="2_h2yge"] [ext_resource type="Texture2D" uid="uid://srv501khyvax" path="res://assets/2_City_Terrains_16x16.png" id="2_h2yge"]
[ext_resource type="PackedScene" uid="uid://pldxcq54fei5" path="res://scenes/new_player.tscn" id="3_h2yge"] [ext_resource type="PackedScene" uid="uid://pldxcq54fei5" path="res://scenes/player.tscn" id="3_h2yge"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_1bvp3"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_1bvp3"]
texture = ExtResource("1_0xm2m") texture = ExtResource("1_0xm2m")
@ -5303,5 +5303,5 @@ sources/1 = SubResource("TileSetAtlasSource_lquwl")
tile_map_data = PackedByteArray("AAAKAAoAAAACABIAAAAKAAkAAAACABEAAAAKAAgAAAACABEAAAAKAAcAAAACABEAAAAKAAYAAAACABEAAAAKAAUAAAACABEAAAAKAAQAAAACABEAAAAKAAMAAAACABEAAAAKAAIAAAACABEAAAAKAAEAAAACABEAAAAKAAAAAAACABAAAAAJAAoAAAABABIAAAAJAAkAAAADABIAAAAJAAgAAAABABEAAAAJAAcAAAABABEAAAAJAAYAAAABABEAAAAJAAUAAAADABIAAAAJAAQAAAADABIAAAAJAAMAAAADABIAAAAJAAIAAAADABIAAAAJAAEAAAABABEAAAAJAAAAAAABABAAAAAIAAoAAAABABIAAAAIAAkAAAABABEAAAAIAAgAAAABABEAAAAIAAcAAAABABEAAAAIAAYAAAABABEAAAAIAAUAAAADABIAAAAIAAQAAAABABEAAAAIAAMAAAABABEAAAAIAAIAAAABABEAAAAIAAEAAAADABIAAAAIAAAAAAABABAAAAAHAAoAAAABABIAAAAHAAkAAAABABEAAAAHAAgAAAADABIAAAAHAAcAAAADABIAAAAHAAYAAAADABIAAAAHAAUAAAABABEAAAAHAAQAAAABABEAAAAHAAMAAAADABIAAAAHAAIAAAADABIAAAAHAAEAAAABABEAAAAHAAAAAAABABAAAAAGAAoAAAABABIAAAAGAAkAAAABABEAAAAGAAgAAAABABEAAAAGAAcAAAABABEAAAAGAAYAAAADABIAAAAGAAUAAAABABEAAAAGAAQAAAADABIAAAAGAAMAAAABABEAAAAGAAIAAAADABIAAAAGAAEAAAADABIAAAAGAAAAAAABABAAAAAFAAoAAAABABIAAAAFAAkAAAADABIAAAAFAAgAAAABABEAAAAFAAcAAAABABEAAAAFAAYAAAADABIAAAAFAAUAAAABABEAAAAFAAQAAAADABIAAAAFAAMAAAADABIAAAAFAAIAAAABABEAAAAFAAEAAAABABEAAAAFAAAAAAABABAAAAAEAAoAAAABABIAAAAEAAkAAAABABEAAAAEAAgAAAABABEAAAAEAAcAAAABABEAAAAEAAYAAAADABIAAAAEAAUAAAADABIAAAAEAAQAAAABABEAAAAEAAMAAAADABIAAAAEAAIAAAABABEAAAAEAAEAAAADABIAAAAEAAAAAAABABAAAAADAAoAAAABABIAAAADAAkAAAADABIAAAADAAgAAAABABEAAAADAAcAAAADABIAAAADAAYAAAADABIAAAADAAUAAAADABIAAAADAAQAAAADABIAAAADAAMAAAADABIAAAADAAIAAAABABEAAAADAAEAAAADABIAAAADAAAAAAABABAAAAACAAoAAAABABIAAAACAAkAAAADABIAAAACAAgAAAADABIAAAACAAcAAAABABEAAAACAAYAAAADABIAAAACAAUAAAADABIAAAACAAQAAAADABIAAAACAAMAAAABABEAAAACAAIAAAABABEAAAACAAEAAAABABEAAAACAAAAAAABABAAAAABAAoAAAABABIAAAABAAkAAAADABIAAAABAAgAAAADABIAAAABAAcAAAABABEAAAABAAYAAAADABIAAAABAAUAAAABABEAAAABAAQAAAADABIAAAABAAMAAAADABIAAAABAAIAAAABABEAAAABAAEAAAADABIAAAABAAAAAAABABAAAAAAAAoAAAAAABIAAAAAAAkAAAAAABEAAAAAAAgAAAAAABEAAAAAAAcAAAAAABEAAAAAAAYAAAAAABEAAAAAAAUAAAAAABEAAAAAAAQAAAAAABEAAAAAAAMAAAAAABEAAAAAAAIAAAAAABEAAAAAAAEAAAAAABEAAAAAAAAAAAAAABAAAAA=") tile_map_data = PackedByteArray("AAAKAAoAAAACABIAAAAKAAkAAAACABEAAAAKAAgAAAACABEAAAAKAAcAAAACABEAAAAKAAYAAAACABEAAAAKAAUAAAACABEAAAAKAAQAAAACABEAAAAKAAMAAAACABEAAAAKAAIAAAACABEAAAAKAAEAAAACABEAAAAKAAAAAAACABAAAAAJAAoAAAABABIAAAAJAAkAAAADABIAAAAJAAgAAAABABEAAAAJAAcAAAABABEAAAAJAAYAAAABABEAAAAJAAUAAAADABIAAAAJAAQAAAADABIAAAAJAAMAAAADABIAAAAJAAIAAAADABIAAAAJAAEAAAABABEAAAAJAAAAAAABABAAAAAIAAoAAAABABIAAAAIAAkAAAABABEAAAAIAAgAAAABABEAAAAIAAcAAAABABEAAAAIAAYAAAABABEAAAAIAAUAAAADABIAAAAIAAQAAAABABEAAAAIAAMAAAABABEAAAAIAAIAAAABABEAAAAIAAEAAAADABIAAAAIAAAAAAABABAAAAAHAAoAAAABABIAAAAHAAkAAAABABEAAAAHAAgAAAADABIAAAAHAAcAAAADABIAAAAHAAYAAAADABIAAAAHAAUAAAABABEAAAAHAAQAAAABABEAAAAHAAMAAAADABIAAAAHAAIAAAADABIAAAAHAAEAAAABABEAAAAHAAAAAAABABAAAAAGAAoAAAABABIAAAAGAAkAAAABABEAAAAGAAgAAAABABEAAAAGAAcAAAABABEAAAAGAAYAAAADABIAAAAGAAUAAAABABEAAAAGAAQAAAADABIAAAAGAAMAAAABABEAAAAGAAIAAAADABIAAAAGAAEAAAADABIAAAAGAAAAAAABABAAAAAFAAoAAAABABIAAAAFAAkAAAADABIAAAAFAAgAAAABABEAAAAFAAcAAAABABEAAAAFAAYAAAADABIAAAAFAAUAAAABABEAAAAFAAQAAAADABIAAAAFAAMAAAADABIAAAAFAAIAAAABABEAAAAFAAEAAAABABEAAAAFAAAAAAABABAAAAAEAAoAAAABABIAAAAEAAkAAAABABEAAAAEAAgAAAABABEAAAAEAAcAAAABABEAAAAEAAYAAAADABIAAAAEAAUAAAADABIAAAAEAAQAAAABABEAAAAEAAMAAAADABIAAAAEAAIAAAABABEAAAAEAAEAAAADABIAAAAEAAAAAAABABAAAAADAAoAAAABABIAAAADAAkAAAADABIAAAADAAgAAAABABEAAAADAAcAAAADABIAAAADAAYAAAADABIAAAADAAUAAAADABIAAAADAAQAAAADABIAAAADAAMAAAADABIAAAADAAIAAAABABEAAAADAAEAAAADABIAAAADAAAAAAABABAAAAACAAoAAAABABIAAAACAAkAAAADABIAAAACAAgAAAADABIAAAACAAcAAAABABEAAAACAAYAAAADABIAAAACAAUAAAADABIAAAACAAQAAAADABIAAAACAAMAAAABABEAAAACAAIAAAABABEAAAACAAEAAAABABEAAAACAAAAAAABABAAAAABAAoAAAABABIAAAABAAkAAAADABIAAAABAAgAAAADABIAAAABAAcAAAABABEAAAABAAYAAAADABIAAAABAAUAAAABABEAAAABAAQAAAADABIAAAABAAMAAAADABIAAAABAAIAAAABABEAAAABAAEAAAADABIAAAABAAAAAAABABAAAAAAAAoAAAAAABIAAAAAAAkAAAAAABEAAAAAAAgAAAAAABEAAAAAAAcAAAAAABEAAAAAAAYAAAAAABEAAAAAAAUAAAAAABEAAAAAAAQAAAAAABEAAAAAAAMAAAAAABEAAAAAAAIAAAAAABEAAAAAAAEAAAAAABEAAAAAAAAAAAAAABAAAAA=")
tile_set = SubResource("TileSet_7mycd") tile_set = SubResource("TileSet_7mycd")
[node name="NewPlayer" parent="." instance=ExtResource("3_h2yge")] [node name="Player" parent="." instance=ExtResource("3_h2yge")]
speed = 100 motion_mode = 1

View File

@ -1,75 +0,0 @@
[gd_scene load_steps=11 format=3 uid="uid://pldxcq54fei5"]
[ext_resource type="Script" uid="uid://ddiwahqiekcqp" path="res://scripts/new_player.gd" id="1_j1k7i"]
[ext_resource type="Texture2D" uid="uid://cfst1xv0quili" path="res://assets/top-down-adam-idle.png" id="1_ykc1o"]
[sub_resource type="AtlasTexture" id="AtlasTexture_j1k7i"]
atlas = ExtResource("1_ykc1o")
region = Rect2(288, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_tidp7"]
atlas = ExtResource("1_ykc1o")
region = Rect2(304, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_eotbk"]
atlas = ExtResource("1_ykc1o")
region = Rect2(320, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vdid1"]
atlas = ExtResource("1_ykc1o")
region = Rect2(336, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_40y4h"]
atlas = ExtResource("1_ykc1o")
region = Rect2(352, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xoay6"]
atlas = ExtResource("1_ykc1o")
region = Rect2(368, 0, 16, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_11i01"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_j1k7i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tidp7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eotbk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vdid1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_40y4h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xoay6")
}],
"loop": true,
"name": &"idle_down",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ykc1o"]
radius = 7.0
height = 16.0
[node name="NewPlayer" type="CharacterBody2D"]
script = ExtResource("1_j1k7i")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_11i01")
animation = &"idle_down"
autoplay = "idle_down"
frame = 2
frame_progress = 0.91331923
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, 8)
shape = SubResource("CapsuleShape2D_ykc1o")
[node name="Camera2D" type="Camera2D" parent="."]
zoom = Vector2(4, 4)

407
scenes/player.tscn Normal file
View File

@ -0,0 +1,407 @@
[gd_scene load_steps=55 format=3 uid="uid://pldxcq54fei5"]
[ext_resource type="Script" uid="uid://ddiwahqiekcqp" path="res://scripts/player.gd" id="1_j1k7i"]
[ext_resource type="Texture2D" uid="uid://cfst1xv0quili" path="res://assets/top-down-adam-idle.png" id="1_ykc1o"]
[ext_resource type="Texture2D" uid="uid://gxwk6kki0y1u" path="res://assets/top-down-adam-walk.png" id="3_ayngq"]
[ext_resource type="PackedScene" uid="uid://dgotxye77b7mr" path="res://scenes/debug_layer.tscn" id="3_niqac"]
[sub_resource type="AtlasTexture" id="AtlasTexture_j1k7i"]
atlas = ExtResource("1_ykc1o")
region = Rect2(288, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_tidp7"]
atlas = ExtResource("1_ykc1o")
region = Rect2(304, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_eotbk"]
atlas = ExtResource("1_ykc1o")
region = Rect2(320, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vdid1"]
atlas = ExtResource("1_ykc1o")
region = Rect2(336, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_40y4h"]
atlas = ExtResource("1_ykc1o")
region = Rect2(352, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xoay6"]
atlas = ExtResource("1_ykc1o")
region = Rect2(368, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_arqjq"]
atlas = ExtResource("1_ykc1o")
region = Rect2(192, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2dryk"]
atlas = ExtResource("1_ykc1o")
region = Rect2(208, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_t483v"]
atlas = ExtResource("1_ykc1o")
region = Rect2(224, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_pkuya"]
atlas = ExtResource("1_ykc1o")
region = Rect2(240, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_if3ei"]
atlas = ExtResource("1_ykc1o")
region = Rect2(256, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_v21ou"]
atlas = ExtResource("1_ykc1o")
region = Rect2(272, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_2uj3n"]
atlas = ExtResource("1_ykc1o")
region = Rect2(0, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_bovn1"]
atlas = ExtResource("1_ykc1o")
region = Rect2(16, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0qby2"]
atlas = ExtResource("1_ykc1o")
region = Rect2(32, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_7rew6"]
atlas = ExtResource("1_ykc1o")
region = Rect2(48, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jw7de"]
atlas = ExtResource("1_ykc1o")
region = Rect2(64, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_5s4g8"]
atlas = ExtResource("1_ykc1o")
region = Rect2(80, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_o45cr"]
atlas = ExtResource("1_ykc1o")
region = Rect2(96, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_4fr7e"]
atlas = ExtResource("1_ykc1o")
region = Rect2(112, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_b2f8q"]
atlas = ExtResource("1_ykc1o")
region = Rect2(128, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_v3ltj"]
atlas = ExtResource("1_ykc1o")
region = Rect2(144, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_44jvg"]
atlas = ExtResource("1_ykc1o")
region = Rect2(160, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_r14ix"]
atlas = ExtResource("1_ykc1o")
region = Rect2(176, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_wtinw"]
atlas = ExtResource("3_ayngq")
region = Rect2(288, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_h8lvs"]
atlas = ExtResource("3_ayngq")
region = Rect2(304, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_e64ve"]
atlas = ExtResource("3_ayngq")
region = Rect2(320, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0gu0"]
atlas = ExtResource("3_ayngq")
region = Rect2(336, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8kb50"]
atlas = ExtResource("3_ayngq")
region = Rect2(352, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_6q50s"]
atlas = ExtResource("3_ayngq")
region = Rect2(368, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_nc4xq"]
atlas = ExtResource("3_ayngq")
region = Rect2(192, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_xo1yp"]
atlas = ExtResource("3_ayngq")
region = Rect2(208, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ee46x"]
atlas = ExtResource("3_ayngq")
region = Rect2(224, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_vnedn"]
atlas = ExtResource("3_ayngq")
region = Rect2(240, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_ejyhw"]
atlas = ExtResource("3_ayngq")
region = Rect2(256, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_m1eql"]
atlas = ExtResource("3_ayngq")
region = Rect2(272, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_00hqc"]
atlas = ExtResource("3_ayngq")
region = Rect2(0, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jhyaw"]
atlas = ExtResource("3_ayngq")
region = Rect2(16, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_tv3qk"]
atlas = ExtResource("3_ayngq")
region = Rect2(32, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_81uvs"]
atlas = ExtResource("3_ayngq")
region = Rect2(48, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_8q122"]
atlas = ExtResource("3_ayngq")
region = Rect2(64, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_tqc8n"]
atlas = ExtResource("3_ayngq")
region = Rect2(80, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_itr70"]
atlas = ExtResource("3_ayngq")
region = Rect2(96, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_jtg6r"]
atlas = ExtResource("3_ayngq")
region = Rect2(112, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_0cauu"]
atlas = ExtResource("3_ayngq")
region = Rect2(128, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_fvj7k"]
atlas = ExtResource("3_ayngq")
region = Rect2(144, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_6qh68"]
atlas = ExtResource("3_ayngq")
region = Rect2(160, 0, 16, 32)
[sub_resource type="AtlasTexture" id="AtlasTexture_h8qjx"]
atlas = ExtResource("3_ayngq")
region = Rect2(176, 0, 16, 32)
[sub_resource type="SpriteFrames" id="SpriteFrames_11i01"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_j1k7i")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tidp7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eotbk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vdid1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_40y4h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xoay6")
}],
"loop": true,
"name": &"idle_down",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_arqjq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2dryk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_t483v")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pkuya")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_if3ei")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v21ou")
}],
"loop": true,
"name": &"idle_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_2uj3n")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bovn1")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0qby2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7rew6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jw7de")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5s4g8")
}],
"loop": true,
"name": &"idle_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_o45cr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4fr7e")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b2f8q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v3ltj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_44jvg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_r14ix")
}],
"loop": true,
"name": &"idle_up",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wtinw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h8lvs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_e64ve")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0gu0")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8kb50")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6q50s")
}],
"loop": true,
"name": &"walk_down",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_nc4xq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xo1yp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ee46x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vnedn")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ejyhw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_m1eql")
}],
"loop": true,
"name": &"walk_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_00hqc")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jhyaw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tv3qk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_81uvs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8q122")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tqc8n")
}],
"loop": true,
"name": &"walk_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_itr70")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jtg6r")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0cauu")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fvj7k")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6qh68")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_h8qjx")
}],
"loop": true,
"name": &"walk_up",
"speed": 5.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ykc1o"]
radius = 7.0
height = 16.0
[node name="Player" type="CharacterBody2D"]
script = ExtResource("1_j1k7i")
[node name="PlayerSprite" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_11i01")
animation = &"walk_up"
autoplay = "idle_down"
[node name="PlayerCollider" type="CollisionShape2D" parent="."]
position = Vector2(0, 8)
shape = SubResource("CapsuleShape2D_ykc1o")
[node name="PlayerCamera" type="Camera2D" parent="."]
zoom = Vector2(4, 4)
[node name="PlayerDebug" parent="." instance=ExtResource("3_niqac")]
variables_to_track = Array[String](["current_direction", "current_direction_string", "velocity", "input_vector"])

16
scripts/debug_layer.gd Normal file
View File

@ -0,0 +1,16 @@
@tool
class_name DebugLayer
extends CanvasLayer
@export var variables_to_track: Array[String]
var debug_label_scene:= preload("res://scenes/debug_label.tscn")
@onready var v_box_container: VBoxContainer = $VBoxContainer
func _ready() -> void:
for variable in variables_to_track:
var new_debug_label:= debug_label_scene.instantiate()
new_debug_label.target = get_parent()
new_debug_label.variable_name = variable
v_box_container.add_child(new_debug_label)

View File

@ -0,0 +1 @@
uid://dy34r8x6ofyaa

View File

@ -1,28 +0,0 @@
#@tool
#@icon
#class_name
extends CharacterBody2D
## Documentation comments
## Signals
## Enums
## Constants
## @export variables
@export var speed: int = 10
## Regular variables
var input_vector: Vector2
## @onready variables
## Overridden built-in virtual methods
#func _init() -> void:
#func _enter_tree() -> void:
#func _ready() -> void:
#func _process(delta: float) -> void:
func _physics_process(_delta: float) -> void:
input_vector = Input.get_vector("left", "right", "up", "down")
velocity = input_vector * speed
move_and_slide()
## Remaining virtual methods
## Overridden custom methods
## Remaining methods
## Subclasses

66
scripts/player.gd Normal file
View File

@ -0,0 +1,66 @@
#@tool
#@icon
#class_name
extends CharacterBody2D
## Documentation comments
enum FaceDirection {LEFT = 0, RIGHT = 1, UP = 2, DOWN = 3}
enum State {IDLE, WALK}
const SPEED: int = 48
## @export variables
## Regular variables
var current_direction: FaceDirection = FaceDirection.DOWN:
set = set_direction
var current_direction_string: String = "down"
var current_state: State = State.IDLE:
set = set_state
var current_state_string: String = "idle"
var input_vector: Vector2
## @onready variables
@onready var player_sprite: AnimatedSprite2D = $PlayerSprite
## Overridden built-in virtual methods
#func _init() -> void:
#func _enter_tree() -> void:
#func _ready() -> void:
#func _process(delta: float) -> void:
func _physics_process(_delta: float) -> void:
input_vector = Vector2.ZERO
if Input.is_action_pressed("left"):
input_vector = Vector2.LEFT
current_direction = FaceDirection.LEFT
current_state = State.WALK
elif Input.is_action_pressed("right"):
input_vector = Vector2.RIGHT
current_direction = FaceDirection.RIGHT
current_state = State.WALK
elif Input.is_action_pressed("up"):
input_vector = Vector2.UP
current_direction = FaceDirection.UP
current_state = State.WALK
elif Input.is_action_pressed("down"):
input_vector = Vector2.DOWN
current_direction = FaceDirection.DOWN
current_state = State.WALK
else: current_state = State.IDLE
velocity = input_vector * SPEED
move_and_slide()
## Remaining virtual methods
## Overridden custom methods
## Remaining methods
func set_direction(new_direction: FaceDirection) -> void:
current_direction = new_direction
current_direction_string = str(FaceDirection.keys()[new_direction]).to_lower()
print_debug("New direction is %s" % current_direction_string)
func set_state(new_state: State) -> void:
current_state = new_state
current_state_string = str(State.keys()[new_state]).to_lower()
var animation_string = current_state_string + "_" + current_direction_string
player_sprite.play(animation_string)
## Subclasses

View File

@ -1,6 +1,6 @@
[gd_scene load_steps=3 format=3 uid="uid://dyerg4wkjmayq"] [gd_scene load_steps=3 format=3 uid="uid://dyerg4wkjmayq"]
[ext_resource type="Script" uid="uid://cmggbqdffjgwf" path="res://spares/player.gd" id="1_4flbx"] [ext_resource type="Script" uid="uid://cmggbqdffjgwf" path="res://spares/_player.gd" id="1_4flbx"]
[ext_resource type="PackedScene" uid="uid://bsmtdok8be7d8" path="res://scenes/debug_label.tscn" id="3_i3pqv"] [ext_resource type="PackedScene" uid="uid://bsmtdok8be7d8" path="res://scenes/debug_label.tscn" id="3_i3pqv"]
[node name="Player" type="CharacterBody2D"] [node name="Player" type="CharacterBody2D"]