From 11605c9f17aabb55060d155f3dbd13d9c7c10efc Mon Sep 17 00:00:00 2001 From: gitea Date: Sat, 26 Apr 2025 15:44:04 -0500 Subject: [PATCH] button? --- entities/button/button.aseprite | Bin 0 -> 931 bytes entities/button/button.aseprite.import | 28 +++++++++ entities/button/button.aseprite.png | Bin 0 -> 583 bytes entities/button/button.aseprite.png.import | 34 +++++++++++ entities/button/button.tscn | 17 ++++++ entities/player/player.aseprite | Bin 949 -> 944 bytes entities/player/player.gd | 53 +++++++++++++--- entities/player/player.tscn | 2 + project.godot | 47 ++++++++++++++ worlds/World 1.tscn | 68 ++++++++++++++++----- 10 files changed, 225 insertions(+), 24 deletions(-) create mode 100644 entities/button/button.aseprite create mode 100644 entities/button/button.aseprite.import create mode 100644 entities/button/button.aseprite.png create mode 100644 entities/button/button.aseprite.png.import create mode 100644 entities/button/button.tscn diff --git a/entities/button/button.aseprite b/entities/button/button.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..e1d2016892f5649acbaf6204f16db521c6bdb28d GIT binary patch literal 931 zcmZ3?%)szqDHDSN7&0<2Fr)x60(dYmf&>`^fRGlzn2CYm*GD$6t!zLG#DJJx0c<6b zb&r5-76zcGhx>XX<<-Gr%NuzYFJqsxpLymD=Dr7P1vj{SE(pq;@Q^rArLZGny0&DE zyP|NfDep2n_Wkb6H-eZS#IW7S;JQ#Mc%n(-K)=F{w&~h)VineiYwzKUIKy6khk3$% z=Gj-+=AGbLv{zv1Cb5;v<<@j9)|)d)VNJdGo;Ur}W{!6mX+z-5zI z-g4Q=^}9@)4ym`DlJ34JFySW0^oK0duQ5;F$vS&B$Lvtv*}{Iar6f=DfY;%hhZk!jhnP zA-4aqYt^KAM{4yS%#3-aCg#$8b>{T%>EWXHj6NH>Oe&fCu6l~q;y}If)bv@$d;ZxS z>Wr9Gb8@qU#_Ml${0`gnZ#=K-{8#FUrV z(pwW;CZ0LJ&+m%H`plX8h0AZ$&%LX9HIny=t5vxXPua1ZbLJl0)uMZF!aK#UmMovv ze%IQ)-9AqF{wKc=`U+LXCb9Q_H`s&w5MsSh=1=0f`#_h|4oXrjb ztN{mSPvF{fqop^ZRkbB#@?_H`JyR0Yxem1*{9}LS4BtGFXD{k&!pgU2=A6H>PFm{m z>xFN8KF=|<6SFX#rW*g*hV4|TC!EEi_`U5u->BNC zC+8fsCfH3p#Z!HAx6HTt)Y8Pc6N0n%w4FEH9{hg8d#l~v%Yu2XxZVbOciVASnamA( uTc@REJQujt?!|Um@8`YZsdH~%t2uA0SjFFYr+VFv@JgT4zpdN2^V$GG?J!CJ literal 0 HcmV?d00001 diff --git a/entities/button/button.aseprite.import b/entities/button/button.aseprite.import new file mode 100644 index 0000000..2734ab3 --- /dev/null +++ b/entities/button/button.aseprite.import @@ -0,0 +1,28 @@ +[remap] + +importer="Aseprite SpriteFrames" +type="SpriteFrames" +uid="uid://b31mdngbhms7k" +path="res://.godot/imported/button.aseprite-330c6544a3de5fb54bfcd807901558f0.res" + +[deps] + +source_file="res://entities/button/button.aseprite" +dest_files=["res://.godot/imported/button.aseprite-330c6544a3de5fb54bfcd807901558f0.res"] + +[params] + +animation/default/name="default" +animation/default/direction=0 +animation/default/repeat_count=0 +animation/autoplay_name="" +atlas_textures/region_filter_clip_enabled=false +middle_import_script="" +post_import_script="" +sprite_sheet/edges_artifacts_avoidance_method=0 +sprite_sheet/sprites_surrounding_color=Color(1, 1, 1, 0) +sprite_sheet/layout=0 +sprite_sheet/max_cells_in_strip=0 +sprite_sheet/trim_sprites_to_overall_min_size=true +sprite_sheet/collapse_transparent_sprites=true +sprite_sheet/merge_duplicated_sprites=true diff --git a/entities/button/button.aseprite.png b/entities/button/button.aseprite.png new file mode 100644 index 0000000000000000000000000000000000000000..578e79bea528588323cd0bc2c1230cc68a7ec96f GIT binary patch literal 583 zcmV-N0=WH&P)Px%0ZBwbR9J=W*3U}AKoAD-FA0iR5Un7+SbFu;(xX@L1^Nno1z)GH;0u&qy;b4VY&EAlL8jJm~5DA3!qu9OR>uO-$x~s}Z5Q9C%J&J;z8l64+U;hvMs(bV4KD^o zGidgPo3pD3qO$?k8M%IrT@W3yLsd59&PpLH8^H0yM_&#C$cf6yQ%GVasP;nx8ZjY_ zX;21RCa0Pq4a;3?1_T8 zD^&~7!9eFqH9{8iRw|mET4T{aEZg)v7<=Bc_9kyOIv#^(06%+`$f!&< zY2(nPE1OOAVgmo5mJRJ9_79?!YMHmLdNBb2^ry4kRjLu9!>m*X%fs0Dl^4<309&e5 ztxV+DW~J(yl}1=Lfa8bn_Ph!Jn7!4^4Eoa<@1D{gb<|R#=(rMBwgs{}6&`ecfd(YExxgYk$c=RDT7|X?Y zxy-iu$SwX-|xqztNnSNX{@>KahZo} zc#h^LSJLXn7^!*PeSTYEaoUTB_C_(~n^DMXb`?Mt&&64fm=g(28G`}_CTHY31 UeD`Y{c1^9x>Yx8*U)d6*`0zB4c>n+a delta 275 zcmV+u0qp*;2ek(QwUGgT0X4CK90CCtlb!+_f9=*i4#F@D1>hcnb1)&XLMDU|8zVyx z&@lsd;Ladd3VImZaq}Y~M5H(2`in~m9ftfmZ`Kbj*WGrGqs^k_F?o8pn$^Pf&NrR* zA1U2Kjj8RU*2R7ygtye%)~u4}v6s4dUoFo&H^pmG?KqBe&*SQD#$(?uhnG#Y+MMX7 zeOM-i>LrgtpXc0k4fWx+mQ>r)#Yh$==ca3|->K9$#;8WJ(dDM}-E!CRcqA8X>+D5a z>c^wil)AOC+?sQ^rQ6EtU?-EXmLHE49AC#Z}{J<`crBr1&x?nFs&? diff --git a/entities/player/player.gd b/entities/player/player.gd index a6ed590..50a0d54 100644 --- a/entities/player/player.gd +++ b/entities/player/player.gd @@ -1,17 +1,54 @@ +# This script controls a top-down player character using input and rotates towards the mouse or right stick. extends CharacterBody2D +# Player movement speed (pixels per second) +@export var speed = 200 -const SPEED = 300.0 +@export var friction = 16 +# Rotation speed (radians per second) - adjust for desired rotation speed +@export var rotation_speed = PI * 4 # Rotate 2 full circles per second -func _physics_process(delta: float) -> void: +# Use mouse for rotation? If false, uses gamepad right stick. +@export var rotate_with_mouse = true - # Get the input direction and handle the movement/deceleration. - # As good practice, you should replace UI actions with custom gameplay actions. - var direction := Input.get_vector("ui_left", "ui_right","ui_up", "ui_down") - if direction: - velocity = direction * SPEED +# Called every physics frame. 'delta' is the elapsed time since the previous frame. +func _physics_process(delta): + # --- Movement Logic --- + var input_vector = Input.get_vector("move_left", "move_right", "move_up", "move_down") + + # Set the velocity based on input + if input_vector != Vector2.ZERO: + velocity = input_vector * speed else: - velocity = lerp(velocity, Vector2.ZERO, 0.75) + # If no input, stop the player (optional, you might want friction instead) + velocity = lerp(velocity, Vector2.ZERO, friction * delta) + # Move the player and handle collisions using CharacterBody2D's move_and_slide move_and_slide() + + # --- Rotation Logic --- + var target_rotation_direction = Vector2.ZERO + + if rotate_with_mouse: + # Get the mouse position in world coordinates + var mouse_position = get_global_mouse_position() + # Calculate the direction vector from the player to the mouse + target_rotation_direction = global_position.direction_to(mouse_position) + else: + # Get right analog stick input + target_rotation_direction = Input.get_vector("rotate_left", "rotate_right", "rotate_up", "rotate_down") + + # If there is a valid rotation direction (either from mouse or stick input) + if target_rotation_direction != Vector2.ZERO: + # Calculate the target rotation angle in radians + var target_angle = target_rotation_direction.angle() + + # Smoothly rotate the player towards the target angle + # Using lerp_angle for smooth interpolation of angles + rotation = lerp_angle(rotation, target_angle, rotation_speed * delta) + +# Note: Make sure you have input actions configured in Project Settings -> Input Map: +# - "move_up", "move_down", "move_left", "move_right" for movement. +# - If not using mouse rotation, add "rotate_up", "rotate_down", "rotate_left", "rotate_right" +# and map them to the right analog stick axes (e.g., Joy Axis 4- for left, Joy Axis 4+ for right, etc.) diff --git a/entities/player/player.tscn b/entities/player/player.tscn index c0d929a..c1e56f9 100644 --- a/entities/player/player.tscn +++ b/entities/player/player.tscn @@ -15,3 +15,5 @@ shape = SubResource("CircleShape2D_sfv1e") [node name="Sprite2D" type="Sprite2D" parent="."] self_modulate = Color(0.223529, 1, 1, 1) texture = ExtResource("2_abrql") + +[node name="Camera2D" type="Camera2D" parent="."] diff --git a/project.godot b/project.godot index 03076a9..10f4e37 100644 --- a/project.godot +++ b/project.godot @@ -18,6 +18,53 @@ config/icon="res://icon.svg" enabled=PackedStringArray("res://addons/nklbdev.importality/plugin.cfg") +[input] + +move_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) +] +} +move_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) +] +} +move_up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) +] +} +move_down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) +] +} +rotate_left={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":-1.0,"script":null) +] +} +rotate_right={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":2,"axis_value":1.0,"script":null) +] +} +rotate_up={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":-1.0,"script":null) +] +} +rotate_down={ +"deadzone": 0.2, +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":3,"axis_value":1.0,"script":null) +] +} + [rendering] renderer/rendering_method="gl_compatibility" diff --git a/worlds/World 1.tscn b/worlds/World 1.tscn index e1e597a..39be5e9 100644 --- a/worlds/World 1.tscn +++ b/worlds/World 1.tscn @@ -9,82 +9,118 @@ texture_region_size = Vector2i(32, 32) 0:0/0 = 0 0:0/0/terrain_set = 0 0:0/0/terrain = 0 -0:0/0/terrains_peering_bit/right_side = 0 -0:0/0/terrains_peering_bit/bottom_right_corner = 0 0:0/0/terrains_peering_bit/bottom_side = 0 0:1/0 = 0 0:1/0/terrain_set = 0 0:1/0/terrain = 0 -0:1/0/terrains_peering_bit/right_side = 0 -0:1/0/terrains_peering_bit/bottom_right_corner = 0 0:1/0/terrains_peering_bit/bottom_side = 0 0:1/0/terrains_peering_bit/top_side = 0 -0:1/0/terrains_peering_bit/top_right_corner = 0 0:2/0 = 0 0:2/0/terrain_set = 0 0:2/0/terrain = 0 -0:2/0/terrains_peering_bit/right_side = 0 0:2/0/terrains_peering_bit/top_side = 0 -0:2/0/terrains_peering_bit/top_right_corner = 0 1:0/0 = 0 1:0/0/terrain_set = 0 1:0/0/terrain = 0 1:0/0/terrains_peering_bit/right_side = 0 1:0/0/terrains_peering_bit/bottom_right_corner = 0 1:0/0/terrains_peering_bit/bottom_side = 0 -1:0/0/terrains_peering_bit/bottom_left_corner = 0 -1:0/0/terrains_peering_bit/left_side = 0 1:1/0 = 0 1:1/0/terrain_set = 0 1:1/0/terrain = 0 1:1/0/terrains_peering_bit/right_side = 0 1:1/0/terrains_peering_bit/bottom_right_corner = 0 1:1/0/terrains_peering_bit/bottom_side = 0 -1:1/0/terrains_peering_bit/bottom_left_corner = 0 -1:1/0/terrains_peering_bit/left_side = 0 -1:1/0/terrains_peering_bit/top_left_corner = 0 1:1/0/terrains_peering_bit/top_side = 0 1:1/0/terrains_peering_bit/top_right_corner = 0 1:2/0 = 0 1:2/0/terrain_set = 0 1:2/0/terrain = 0 1:2/0/terrains_peering_bit/right_side = 0 -1:2/0/terrains_peering_bit/left_side = 0 -1:2/0/terrains_peering_bit/top_left_corner = 0 1:2/0/terrains_peering_bit/top_side = 0 1:2/0/terrains_peering_bit/top_right_corner = 0 2:0/0 = 0 2:0/0/terrain_set = 0 2:0/0/terrain = 0 +2:0/0/terrains_peering_bit/right_side = 0 +2:0/0/terrains_peering_bit/bottom_right_corner = 0 2:0/0/terrains_peering_bit/bottom_side = 0 2:0/0/terrains_peering_bit/bottom_left_corner = 0 2:0/0/terrains_peering_bit/left_side = 0 2:1/0 = 0 2:1/0/terrain_set = 0 2:1/0/terrain = 0 +2:1/0/terrains_peering_bit/right_side = 0 +2:1/0/terrains_peering_bit/bottom_right_corner = 0 2:1/0/terrains_peering_bit/bottom_side = 0 2:1/0/terrains_peering_bit/bottom_left_corner = 0 2:1/0/terrains_peering_bit/left_side = 0 2:1/0/terrains_peering_bit/top_left_corner = 0 2:1/0/terrains_peering_bit/top_side = 0 +2:1/0/terrains_peering_bit/top_right_corner = 0 2:2/0 = 0 2:2/0/terrain_set = 0 2:2/0/terrain = 0 +2:2/0/terrains_peering_bit/right_side = 0 2:2/0/terrains_peering_bit/left_side = 0 2:2/0/terrains_peering_bit/top_left_corner = 0 2:2/0/terrains_peering_bit/top_side = 0 +2:2/0/terrains_peering_bit/top_right_corner = 0 +3:0/0 = 0 +3:0/0/terrain_set = 0 +3:0/0/terrain = 0 +3:0/0/terrains_peering_bit/bottom_side = 0 +3:0/0/terrains_peering_bit/bottom_left_corner = 0 +3:0/0/terrains_peering_bit/left_side = 0 +4:0/0 = 0 +4:0/0/terrain_set = 0 +4:0/0/terrain = 0 +4:0/0/terrains_peering_bit/right_side = 0 +4:0/0/terrains_peering_bit/bottom_side = 0 +4:0/0/terrains_peering_bit/left_side = 0 +4:0/0/terrains_peering_bit/top_side = 0 +3:1/0 = 0 +3:1/0/terrain_set = 0 +3:1/0/terrain = 0 +3:1/0/terrains_peering_bit/bottom_side = 0 +3:1/0/terrains_peering_bit/bottom_left_corner = 0 +3:1/0/terrains_peering_bit/left_side = 0 +3:1/0/terrains_peering_bit/top_left_corner = 0 +3:1/0/terrains_peering_bit/top_side = 0 +3:2/0 = 0 +3:2/0/terrain_set = 0 +3:2/0/terrain = 0 +3:2/0/terrains_peering_bit/left_side = 0 +3:2/0/terrains_peering_bit/top_left_corner = 0 +3:2/0/terrains_peering_bit/top_side = 0 +3:3/0 = 0 +3:3/0/terrain_set = 0 +3:3/0/terrain = 0 +3:3/0/terrains_peering_bit/left_side = 0 +2:3/0 = 0 +2:3/0/terrain_set = 0 +2:3/0/terrain = 0 +2:3/0/terrains_peering_bit/right_side = 0 +2:3/0/terrains_peering_bit/left_side = 0 +1:3/0 = 0 +1:3/0/terrain_set = 0 +1:3/0/terrain = 0 +1:3/0/terrains_peering_bit/right_side = 0 +0:3/0 = 0 +0:3/0/terrain_set = 0 +0:3/0/terrain = 0 [sub_resource type="TileSet" id="TileSet_wjxv1"] tile_size = Vector2i(32, 32) terrain_set_0/mode = 0 terrain_set_0/terrain_0/name = "Grass" -terrain_set_0/terrain_0/color = Color(0.376471, 0.784314, 0.207843, 1) +terrain_set_0/terrain_0/color = Color(0.745098, 0.180392, 0.72549, 1) sources/0 = SubResource("TileSetAtlasSource_6qmhn") [node name="World1" type="Node2D"] [node name="TileMapLayer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAAAAAAAAABAAEAAAAAAAEAAAABAAEAAAABAAEAAAABAAEAAAACAAIAAAABAAEAAAADAAIAAAABAAEAAAAEAAMAAAABAAEAAAAFAAMAAAABAAEAAAAFAAQAAAABAAEAAAAGAAQAAAABAAEAAAAHAAUAAAABAAEAAAAIAAUAAAACAAIAAAAIAAQAAAACAAEAAAAHAAMAAAABAAEAAAAGAAMAAAABAAEAAAAHAAQAAAABAAEAAAAGAAUAAAABAAEAAAAGAAYAAAAAAAIAAAAHAAYAAAACAAIAAAAFAAUAAAABAAIAAAAHAAIAAAABAAEAAAAIAAIAAAACAAEAAAAIAAEAAAACAAAAAAAHAAEAAAABAAEAAAAGAAIAAAABAAEAAAAEAAQAAAABAAEAAAADAAUAAAABAAIAAAAEAAUAAAABAAIAAAAGAAEAAAABAAEAAAAFAAEAAAABAAEAAAAEAAEAAAABAAEAAAADAAEAAAABAAEAAAABAAIAAAABAAEAAAAAAAMAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAAFAAIAAAABAAEAAAACAAMAAAABAAEAAAADAAMAAAABAAEAAAAHAAAAAAACAAEAAAAGAP//AAABAAEAAAAFAP//AAABAAEAAAAEAP//AAABAAEAAAACAAAAAAABAAEAAAADAP//AAABAAAAAAABAAAAAAABAAEAAAD//wIAAAABAAEAAAD//wMAAAABAAEAAAABAAMAAAABAAEAAAAEAAIAAAABAAEAAAAFAAAAAAABAAEAAAACAAEAAAABAAEAAAD//wQAAAABAAEAAAAAAAUAAAABAAEAAAD//wUAAAABAAEAAAD+/wYAAAABAAEAAAD+/wcAAAAAAAIAAAD//wcAAAABAAIAAAAAAAcAAAACAAIAAAABAAYAAAACAAIAAAACAAUAAAABAAIAAAAEAAAAAAABAAEAAAAFAP7/AAABAAEAAAAEAP7/AAAAAAAAAAACAP//AAABAAAAAAD+/wIAAAABAAEAAAAAAAIAAAABAAEAAAD+/wQAAAABAAEAAAD+/wMAAAABAAEAAAD//wEAAAABAAEAAAD//wAAAAABAAEAAAD+/wEAAAABAAEAAAD9/wQAAAABAAEAAAD9/wUAAAAAAAIAAAD+/wUAAAABAAEAAAABAAUAAAABAAEAAAAAAAYAAAABAAEAAAD//wYAAAABAAEAAAAIAAMAAAACAAEAAAAGAAAAAAABAAEAAAADAAAAAAABAAEAAAAGAP7/AAABAAEAAAAHAP7/AAACAAAAAAAHAP//AAACAAEAAAAGAP3/AAACAAAAAAAFAP3/AAAAAAAAAAD9/wMAAAABAAEAAAD9/wIAAAABAAEAAAD9/wEAAAABAAEAAAD9/wAAAAABAAEAAAD+/wAAAAABAAEAAAD9////AAABAAEAAAD+////AAABAAEAAAD/////AAABAAEAAAAAAP//AAABAAAAAAABAP//AAABAAAAAAD8////AAAAAAAAAAD8/wAAAAAAAAEAAAD8/wEAAAABAAEAAAD8/wIAAAABAAEAAAD8/wMAAAABAAEAAAD8/wQAAAABAAIAAAD+//7/AAABAAAAAAD///7/AAACAAAAAAD7/wIAAAABAAEAAAD6/wIAAAABAAEAAAD5/wIAAAAAAAEAAAD5/wMAAAAAAAIAAAD6/wMAAAABAAIAAAD7/wMAAAABAAEAAAD7/wEAAAABAAAAAAD6/wEAAAABAAAAAAD5/wEAAAAAAAAAAAD7/wQAAAAAAAIAAAD9//7/AAAAAAAAAAA=") +tile_map_data = PackedByteArray("AAAAAAAAAAACAAEAAAAAAAEAAAACAAEAAAABAAEAAAACAAEAAAACAAIAAAACAAEAAAADAAIAAAACAAEAAAAEAAMAAAACAAEAAAAFAAMAAAACAAEAAAAFAAQAAAACAAEAAAAGAAQAAAACAAEAAAAHAAUAAAACAAEAAAAIAAUAAAADAAIAAAAIAAQAAAADAAEAAAAHAAMAAAACAAEAAAAGAAMAAAACAAEAAAAHAAQAAAACAAEAAAAGAAUAAAACAAEAAAAGAAYAAAABAAIAAAAHAAYAAAADAAIAAAAFAAUAAAACAAIAAAAHAAIAAAACAAEAAAAIAAIAAAADAAEAAAAIAAEAAAADAAAAAAAHAAEAAAACAAEAAAAGAAIAAAACAAEAAAAEAAQAAAACAAEAAAADAAUAAAACAAIAAAAEAAUAAAACAAIAAAAGAAEAAAACAAEAAAAFAAEAAAACAAEAAAAEAAEAAAACAAEAAAADAAEAAAACAAEAAAABAAIAAAACAAEAAAAAAAMAAAACAAEAAAAAAAQAAAACAAEAAAABAAQAAAACAAEAAAACAAQAAAACAAEAAAADAAQAAAACAAEAAAAFAAIAAAACAAEAAAACAAMAAAACAAEAAAADAAMAAAACAAEAAAAHAAAAAAADAAEAAAAGAP//AAACAAEAAAAFAP//AAACAAEAAAAEAP//AAACAAEAAAACAAAAAAACAAEAAAADAP//AAACAAAAAAABAAAAAAACAAEAAAD//wIAAAACAAEAAAD//wMAAAACAAEAAAABAAMAAAACAAEAAAAEAAIAAAACAAEAAAAFAAAAAAACAAEAAAACAAEAAAACAAEAAAD//wQAAAACAAEAAAAAAAUAAAACAAEAAAD//wUAAAACAAEAAAD+/wYAAAABAAEAAAD+/wcAAAABAAIAAAD//wcAAAACAAIAAAAAAAcAAAADAAIAAAABAAYAAAADAAIAAAACAAUAAAACAAIAAAAEAAAAAAACAAEAAAAFAP7/AAACAAEAAAAEAP7/AAABAAAAAAACAP//AAACAAAAAAD+/wIAAAACAAEAAAAAAAIAAAACAAEAAAD+/wQAAAACAAEAAAD+/wMAAAACAAEAAAD//wEAAAACAAEAAAD//wAAAAACAAEAAAD+/wEAAAACAAEAAAD9/wQAAAACAAEAAAD9/wUAAAABAAIAAAD+/wUAAAACAAEAAAABAAUAAAACAAEAAAAAAAYAAAACAAEAAAD//wYAAAACAAEAAAAIAAMAAAADAAEAAAAGAAAAAAACAAEAAAADAAAAAAACAAEAAAAGAP7/AAACAAEAAAAHAP7/AAADAAAAAAAHAP//AAADAAEAAAAGAP3/AAADAAAAAAAFAP3/AAABAAAAAAD9/wMAAAACAAEAAAD9/wIAAAACAAEAAAD9/wEAAAACAAEAAAD9/wAAAAACAAEAAAD+/wAAAAACAAEAAAD9////AAACAAEAAAD+////AAACAAEAAAD/////AAACAAEAAAAAAP//AAACAAEAAAABAP//AAACAAAAAAD8////AAABAAAAAAD8/wAAAAABAAEAAAD8/wEAAAACAAEAAAD8/wIAAAACAAEAAAD8/wMAAAACAAEAAAD8/wQAAAACAAIAAAD+//7/AAACAAAAAAD///7/AAACAAAAAAD7/wIAAAACAAEAAAD6/wIAAAACAAEAAAD5/wIAAAABAAEAAAD5/wMAAAABAAIAAAD6/wMAAAACAAIAAAD7/wMAAAACAAEAAAD7/wEAAAACAAAAAAD6/wEAAAACAAAAAAD5/wEAAAABAAAAAAD7/wQAAAABAAIAAAD9//7/AAABAAAAAAAAAP7/AAADAAAAAAA=") tile_set = SubResource("TileSet_wjxv1") [node name="Player" parent="." instance=ExtResource("2_8t5gy")]