diff --git a/scenes/levels/hood.tscn b/scenes/levels/hood.tscn index 4c4da22..a653af3 100644 --- a/scenes/levels/hood.tscn +++ b/scenes/levels/hood.tscn @@ -195,8 +195,9 @@ sources/2 = SubResource("TileSetAtlasSource_1r5ec") [node name="Hood" type="Node2D"] [node name="TileMapLayer" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAAAAAAAgAAAAMAAAAMAAgAAgAAAAMAAAAMAAcAAgAAAAMAAAAMAAYAAgAAAAMAAAAMAAUAAgAAAAMAAAAMAAQAAgAAAAMAAAAMAAMAAgAAAAMAAAAMAAIAAgAAAAMAAAAMAAEAAgAAAAMAAAAMAAAAAgAAAAMAAAALAAgAAgAAAAMAAAALAAcAAgADAAMAAAALAAYAAgAAAAAAAAALAAUAAgAAAAMAAAALAAQAAgADAAMAAAALAAMAAgADAAIAAAALAAIAAgAAAAAAAAALAAEAAgAAAAMAAAALAAAAAgAAAAMAAAAKAAgAAgAAAAMAAAAKAAcAAgAAAAIAAAAKAAYAAgAAAAEAAAAKAAUAAgADAAIAAAAKAAQAAgADAAEAAAAKAAMAAgACAAEAAAAKAAIAAgADAAAAAAAKAAEAAgAAAAMAAAAKAAAAAgAAAAMAAAAJAAgAAgAAAAMAAAAJAAcAAgAAAAMAAAAJAAYAAgABAAIAAAAJAAUAAgACAAEAAAAJAAQAAgACAAEAAAAJAAMAAgACAAEAAAAJAAIAAgADAAAAAAAJAAEAAgAAAAMAAAAJAAAAAgAAAAMAAAAIAAgAAgAAAAMAAAAIAAcAAgADAAMAAAAIAAYAAgADAAEAAAAIAAUAAgACAAEAAAAIAAQAAgACAAEAAAAIAAMAAgACAAEAAAAIAAIAAgADAAAAAAAIAAEAAgAAAAMAAAAIAAAAAgAAAAMAAAAHAAgAAgAAAAMAAAAHAAcAAgABAAIAAAAHAAYAAgACAAEAAAAHAAUAAgACAAEAAAAHAAQAAgACAAEAAAAHAAMAAgACAAEAAAAHAAIAAgADAAAAAAAHAAEAAgAAAAMAAAAHAAAAAgAAAAMAAAAGAAgAAgAAAAMAAAAGAAcAAgABAAIAAAAGAAYAAgACAAEAAAAGAAUAAgACAAEAAAAGAAQAAgACAAEAAAAGAAMAAgACAAEAAAAGAAIAAgADAAAAAAAGAAEAAgAAAAMAAAAGAAAAAgAAAAMAAAAFAAgAAgAAAAMAAAAFAAcAAgABAAIAAAAFAAYAAgACAAEAAAAFAAUAAgACAAEAAAAFAAQAAgACAAEAAAAFAAMAAgACAAEAAAAFAAIAAgADAAAAAAAFAAEAAgAAAAMAAAAFAAAAAgAAAAMAAAAEAAgAAgAAAAMAAAAEAAcAAgAAAAIAAAAEAAYAAgABAAAAAAAEAAUAAgABAAAAAAAEAAQAAgACAAIAAAAEAAMAAgACAAEAAAAEAAIAAgADAAAAAAAEAAEAAgAAAAMAAAAEAAAAAgAAAAMAAAADAAgAAgAAAAMAAAADAAcAAgAAAAMAAAADAAYAAgABAAIAAAADAAUAAgAAAAMAAAADAAQAAgAAAAIAAAADAAMAAgABAAAAAAADAAIAAgABAAMAAAADAAEAAgAAAAMAAAADAAAAAgAAAAMAAAACAAgAAgAAAAMAAAACAAcAAgAAAAMAAAACAAYAAgAAAAIAAAACAAUAAgAAAAMAAAACAAQAAgAAAAMAAAACAAMAAgAAAAMAAAACAAIAAgAAAAMAAAACAAEAAgAAAAMAAAACAAAAAgAAAAMAAAABAAgAAgAAAAMAAAABAAcAAgAAAAMAAAABAAYAAgAAAAMAAAABAAUAAgAAAAMAAAABAAQAAgADAAMAAAABAAMAAgAAAAAAAAABAAIAAgAAAAMAAAABAAEAAgAAAAMAAAABAAAAAgAAAAMAAAAAAAgAAgAAAAMAAAAAAAcAAgAAAAMAAAAAAAYAAgAAAAMAAAAAAAUAAgAAAAMAAAAAAAQAAgAAAAIAAAAAAAMAAgABAAMAAAAAAAIAAgAAAAMAAAAAAAEAAgAAAAMAAAA=") +tile_map_data = PackedByteArray("AAAAAAAAAgAAAAMAAAAMAAgAAgAAAAMAAAAMAAcAAgAAAAMAAAAMAAYAAgAAAAMAAAAMAAUAAgABAAIAAAAMAAQAAgADAAAAAAAMAAMAAgAAAAMAAAAMAAIAAgAAAAMAAAAMAAEAAgAAAAMAAAAMAAAAAgAAAAMAAAALAAgAAgAAAAMAAAALAAcAAgAAAAMAAAALAAYAAgAAAAMAAAALAAUAAgABAAIAAAALAAQAAgADAAAAAAALAAMAAgAAAAMAAAALAAIAAgAAAAMAAAALAAEAAgAAAAMAAAALAAAAAgAAAAMAAAAKAAgAAgAAAAMAAAAKAAcAAgAAAAMAAAAKAAYAAgAAAAMAAAAKAAUAAgABAAIAAAAKAAQAAgADAAAAAAAKAAMAAgAAAAMAAAAKAAIAAgAAAAMAAAAKAAEAAgAAAAMAAAAKAAAAAgAAAAMAAAAJAAgAAgAAAAMAAAAJAAcAAgAAAAMAAAAJAAYAAgAAAAMAAAAJAAUAAgABAAIAAAAJAAQAAgADAAAAAAAJAAMAAgAAAAMAAAAJAAIAAgAAAAMAAAAJAAEAAgAAAAMAAAAJAAAAAgAAAAMAAAAIAAgAAgAAAAMAAAAIAAcAAgAAAAMAAAAIAAYAAgADAAMAAAAIAAUAAgADAAEAAAAIAAQAAgACAAAAAAAIAAMAAgADAAIAAAAIAAIAAgAAAAAAAAAIAAEAAgAAAAMAAAAIAAAAAgAAAAMAAAAHAAgAAgAAAAMAAAAHAAcAAgAAAAMAAAAHAAYAAgABAAIAAAAHAAUAAgABAAEAAAAHAAEAAgAAAAMAAAAHAAAAAgAAAAMAAAAGAAgAAgAAAAMAAAAGAAcAAgAAAAMAAAAGAAMAAgAAAAMAAAAGAAIAAgAAAAMAAAAGAAEAAgAAAAMAAAAGAAAAAgAAAAMAAAAFAAgAAgADAAMAAAAFAAcAAgADAAIAAAAFAAYAAgADAAEAAAAFAAUAAgADAAAAAAAFAAQAAgAAAAMAAAAFAAMAAgAAAAMAAAAFAAIAAgAAAAMAAAAFAAEAAgAAAAMAAAAFAAAAAgAAAAMAAAAEAAgAAgAAAAMAAAAEAAcAAgAAAAMAAAAEAAYAAgABAAIAAAAEAAUAAgACAAAAAAAEAAQAAgADAAIAAAAEAAMAAgADAAIAAAAEAAIAAgADAAIAAAAEAAEAAgADAAIAAAAEAAAAAgAAAAAAAAADAAgAAgAAAAMAAAADAAcAAgAAAAMAAAADAAYAAgAAAAIAAAADAAUAAgABAAAAAAADAAQAAgACAAIAAAADAAMAAgABAAAAAAADAAIAAgABAAAAAAADAAEAAgABAAAAAAADAAAAAgABAAMAAAACAAgAAgAAAAMAAAACAAcAAgAAAAMAAAACAAYAAgAAAAMAAAACAAUAAgAAAAMAAAACAAQAAgABAAIAAAACAAMAAgAAAAMAAAACAAIAAgAAAAMAAAACAAEAAgAAAAMAAAACAAAAAgAAAAMAAAABAAgAAgAAAAMAAAABAAcAAgAAAAMAAAABAAYAAgAAAAMAAAABAAUAAgAAAAMAAAABAAQAAgABAAIAAAABAAMAAgAAAAMAAAABAAIAAgAAAAMAAAABAAEAAgAAAAMAAAABAAAAAgAAAAMAAAAAAAgAAgAAAAMAAAAAAAcAAgAAAAMAAAAAAAYAAgAAAAMAAAAAAAUAAgAAAAMAAAAAAAQAAgAAAAIAAAAAAAMAAgAAAAMAAAAAAAIAAgAAAAMAAAAAAAEAAgAAAAMAAAAAAP//AgAAAAMAAAABAP//AgAAAAMAAAACAP//AgAAAAMAAAADAP//AgAAAAMAAAAEAP//AgAAAAMAAAAFAP//AgAAAAMAAAAGAP//AgAAAAMAAAAHAP//AgAAAAMAAAAIAP//AgAAAAMAAAAJAP//AgAAAAMAAAAKAP//AgAAAAMAAAALAP//AgAAAAMAAAAMAP//AgAAAAMAAAANAAIAAgAAAAMAAAANAAEAAgAAAAMAAAANAAAAAgAAAAMAAAANAP//AgAAAAMAAAANAAMAAgAAAAMAAAANAAQAAgAAAAAAAAANAAUAAgADAAMAAAANAAYAAgAAAAMAAAANAAcAAgAAAAMAAAANAAgAAgAAAAMAAAANAAkAAgAAAAMAAAAMAAkAAgAAAAMAAAALAAkAAgAAAAMAAAAKAAkAAgAAAAMAAAAJAAkAAgAAAAMAAAAIAAkAAgAAAAMAAAAHAAkAAgAAAAMAAAAGAAkAAgAAAAMAAAAFAAkAAgAAAAMAAAAEAAkAAgAAAAMAAAADAAkAAgAAAAMAAAACAAkAAgAAAAMAAAABAAkAAgAAAAMAAAAAAAkAAgAAAAMAAAD//wkAAgAAAAMAAAD//wgAAgAAAAMAAAD//wcAAgAAAAMAAAD//wYAAgAAAAMAAAD//wUAAgAAAAMAAAD//wQAAgAAAAMAAAD//wMAAgAAAAMAAAD//wIAAgAAAAMAAAD//wEAAgAAAAMAAAD//wAAAgAAAAMAAAD/////AgAAAAMAAAAHAAIAAgAAAAMAAAAHAAMAAgAAAAMAAAAHAAQAAgABAAMAAAAGAAQAAgAAAAMAAAAGAAUAAgADAAAAAAAGAAYAAgABAAIAAAA=") tile_set = SubResource("TileSet_ge1l5") -[node name="Player" parent="." instance=ExtResource("1_ge1l5")] +[node name="Player" parent="." node_paths=PackedStringArray("tilemap") instance=ExtResource("1_ge1l5")] position = Vector2(128, 76) +tilemap = NodePath("../TileMapLayer") diff --git a/scenes/player.tscn b/scenes/player.tscn index c377eac..37260e3 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -110,5 +110,6 @@ rotation = -1.5707964 shape = SubResource("CapsuleShape2D_3vyb7") [node name="Camera2D" type="Camera2D" parent="."] +process_callback = 0 drag_horizontal_enabled = true drag_vertical_enabled = true diff --git a/scripts/player.gd b/scripts/player.gd index 0aa2605..f4f2764 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -3,9 +3,24 @@ extends CharacterBody2D const SPEED: int = 500 @onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D +@onready var cam: Camera2D = $Camera2D +@export var tilemap: TileMapLayer +var tilesize: int = 32 +var position_limit_rect: Rect2 + +func _ready() -> void: + var used_tilemap_rect: Rect2i = tilemap.get_used_rect() + tilesize = tilemap.tile_set.tile_size.x + cam.limit_left = used_tilemap_rect.position.x * tilesize + cam.limit_top = used_tilemap_rect.position.y * tilesize + cam.limit_right = (used_tilemap_rect.size.x - 1) * tilesize + cam.limit_bottom = (used_tilemap_rect.size.y - 1) * tilesize + position_limit_rect.position = Vector2(cam.limit_left + float(tilesize) / 4, cam.limit_top + float(tilesize) / 2) + position_limit_rect.size = Vector2(cam.limit_right - float(tilesize) / 4, cam.limit_bottom - float(tilesize) / 2) func _physics_process(delta: float) -> void: velocity = Input.get_vector("move_left","move_right","move_up","move_down").normalized() * delta * SPEED * 3 + position = position.clamp(position_limit_rect.position, position_limit_rect.size) move_and_slide() animated_sprite.flip_h = velocity.x < 0