first house

This commit is contained in:
2025-10-21 01:30:08 +02:00
parent 191235da54
commit 1fe75a871e
16 changed files with 173 additions and 8 deletions

BIN
aseprite/houses.aseprite Normal file

Binary file not shown.

BIN
aseprite/nature.aseprite Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://db4dctk13rgbm"
path="res://.godot/imported/houses.png-beb9348ecf7ad3cb2e053ab2dbfaa8e1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/textures/spritesheets/houses.png"
dest_files=["res://.godot/imported/houses.png-beb9348ecf7ad3cb2e053ab2dbfaa8e1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@@ -100,6 +100,18 @@ escape={
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
]
}
interact={
"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":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, 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":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(495, 26),"global_position":Vector2(514, 122),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
, 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":89,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null)
]
}
[layer_names]
2d_physics/layer_2="Interactable"
[physics]

27
scenes/houses/home.tscn Normal file
View File

@@ -0,0 +1,27 @@
[gd_scene load_steps=6 format=3 uid="uid://cokphmh2g8wvs"]
[ext_resource type="Texture2D" uid="uid://db4dctk13rgbm" path="res://assets/textures/spritesheets/houses.png" id="1_fltv6"]
[ext_resource type="PackedScene" uid="uid://h77hilgbces" path="res://scenes/interactables/interact_sceneswitch.tscn" id="2_0afuu"]
[ext_resource type="PackedScene" uid="uid://ccfdsdgaon63m" path="res://scenes/levels/home.tscn" id="3_0afuu"]
[sub_resource type="AtlasTexture" id="AtlasTexture_0db70"]
atlas = ExtResource("1_fltv6")
region = Rect2(1, 4, 94, 89)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_0afuu"]
size = Vector2(90, 46)
[node name="Home" type="StaticBody2D"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = SubResource("AtlasTexture_0db70")
[node name="InteractSceneswitch" parent="." instance=ExtResource("2_0afuu")]
position = Vector2(0, 25)
scene = ExtResource("3_0afuu")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
y_sort_enabled = true
position = Vector2(0, 18)
shape = SubResource("RectangleShape2D_0afuu")
debug_color = Color(0.8768643, 0.34231007, 0.046793222, 0.41960785)

14
scenes/interactable.tscn Normal file
View File

@@ -0,0 +1,14 @@
[gd_scene load_steps=3 format=3 uid="uid://n24dhbpflcec"]
[ext_resource type="Script" uid="uid://ccthj5mtii0bw" path="res://scripts/interactable.gd" id="1_56v82"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ij5l6"]
size = Vector2(32, 32)
[node name="Interactable" type="Area2D"]
collision_layer = 2
collision_mask = 0
script = ExtResource("1_56v82")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_ij5l6")

View File

@@ -0,0 +1,11 @@
[gd_scene load_steps=3 format=3 uid="uid://h77hilgbces"]
[ext_resource type="Script" uid="uid://c4ejbchoh7yrh" path="res://scripts/interactables/interact_sceneswitch.gd" id="1_f3ssn"]
[ext_resource type="PackedScene" uid="uid://n24dhbpflcec" path="res://scenes/interactable.tscn" id="2_43o6g"]
[node name="InteractSceneswitch" type="Node2D"]
script = ExtResource("1_f3ssn")
[node name="Interactable" parent="." instance=ExtResource("2_43o6g")]
[connection signal="interacted" from="Interactable" to="." method="_on_interactable_interacted"]

View File

@@ -1,7 +1,8 @@
[gd_scene load_steps=5 format=4 uid="uid://clnb1eshis30m"]
[gd_scene load_steps=8 format=4 uid="uid://clnb1eshis30m"]
[ext_resource type="Texture2D" uid="uid://dve2b2glwitsw" path="res://assets/textures/tilemaps/grass_tilemap.png" id="1_74em3"]
[ext_resource type="PackedScene" uid="uid://dfbomt0l6b1o4" path="res://scenes/player.tscn" id="1_ge1l5"]
[ext_resource type="PackedScene" uid="uid://cokphmh2g8wvs" path="res://scenes/houses/home.tscn" id="3_5rqdi"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_1r5ec"]
texture = ExtResource("1_74em3")
@@ -192,13 +193,33 @@ terrain_set_0/terrain_1/name = "Dirt"
terrain_set_0/terrain_1/color = Color(0.5, 0.34375, 0.25, 1)
sources/2 = SubResource("TileSetAtlasSource_1r5ec")
[node name="Hood" type="Node2D"]
[sub_resource type="TileSetScenesCollectionSource" id="TileSetScenesCollectionSource_1r5ec"]
resource_name = "Houses"
scenes/1/scene = ExtResource("3_5rqdi")
[node name="TileMapLayer" type="TileMapLayer" parent="."]
[sub_resource type="TileSet" id="TileSet_5rqdi"]
tile_size = Vector2i(32, 32)
sources/0 = SubResource("TileSetScenesCollectionSource_1r5ec")
[node name="Hood" type="Node2D"]
z_as_relative = false
y_sort_enabled = true
[node name="Ground" type="TileMapLayer" parent="."]
z_index = -1
tile_map_data = PackedByteArray("AAAQAAkAAgAAAAMAAAAQAAgAAgAAAAMAAAAQAAcAAgAAAAMAAAAQAAYAAgAAAAMAAAAQAAUAAgAAAAMAAAAQAAQAAgAAAAMAAAAQAAMAAgAAAAMAAAAQAAIAAgAAAAMAAAAQAAEAAgAAAAMAAAAQAAAAAgAAAAMAAAAQAP//AgAAAAMAAAAQAP7/AgAAAAMAAAAPAAkAAgAAAAMAAAAPAAgAAgAAAAMAAAAPAAcAAgAAAAMAAAAPAAYAAgADAAMAAAAPAAUAAgADAAIAAAAPAAQAAgAAAAAAAAAPAAMAAgAAAAMAAAAPAAIAAgAAAAMAAAAPAAEAAgAAAAMAAAAPAAAAAgAAAAMAAAAPAP//AgAAAAMAAAAPAP7/AgAAAAMAAAAOAAkAAgAAAAMAAAAOAAgAAgAAAAMAAAAOAAcAAgAAAAMAAAAOAAYAAgABAAIAAAAOAAUAAgACAAEAAAAOAAQAAgADAAAAAAAOAAMAAgAAAAMAAAAOAAIAAgAAAAMAAAAOAAEAAgAAAAMAAAAOAAAAAgAAAAMAAAAOAP//AgAAAAMAAAAOAP7/AgAAAAMAAAANAAkAAgAAAAMAAAANAAgAAgAAAAMAAAANAAcAAgAAAAMAAAANAAYAAgABAAIAAAANAAUAAgACAAEAAAANAAQAAgADAAAAAAANAAMAAgAAAAMAAAANAAIAAgAAAAMAAAANAAEAAgAAAAMAAAANAAAAAgAAAAMAAAANAP//AgAAAAMAAAANAP7/AgAAAAMAAAAMAAkAAgAAAAMAAAAMAAgAAgAAAAMAAAAMAAcAAgAAAAMAAAAMAAYAAgABAAIAAAAMAAUAAgACAAEAAAAMAAQAAgADAAAAAAAMAAMAAgAAAAMAAAAMAAIAAgAAAAMAAAAMAAEAAgAAAAMAAAAMAAAAAgAAAAMAAAAMAP//AgAAAAMAAAAMAP7/AgAAAAMAAAALAAkAAgAAAAMAAAALAAgAAgAAAAMAAAALAAcAAgAAAAMAAAALAAYAAgABAAIAAAALAAUAAgACAAEAAAALAAQAAgADAAAAAAALAAMAAgAAAAMAAAALAAIAAgAAAAMAAAALAAEAAgAAAAMAAAALAAAAAgAAAAMAAAALAP//AgAAAAMAAAALAP7/AgAAAAMAAAAKAAkAAgAAAAMAAAAKAAgAAgAAAAMAAAAKAAcAAgAAAAMAAAAKAAYAAgABAAIAAAAKAAUAAgACAAEAAAAKAAQAAgACAAAAAAAKAAMAAgADAAIAAAAKAAIAAgAAAAAAAAAKAAEAAgAAAAMAAAAKAAAAAgAAAAMAAAAKAP//AgAAAAMAAAAKAP7/AgAAAAMAAAAJAAkAAgAAAAMAAAAJAAgAAgAAAAMAAAAJAAcAAgAAAAMAAAAJAAYAAgABAAIAAAAJAAUAAgACAAEAAAAJAAQAAgACAAEAAAAJAAMAAgACAAEAAAAJAAIAAgADAAAAAAAJAAEAAgAAAAMAAAAJAAAAAgAAAAMAAAAJAP//AgAAAAMAAAAJAP7/AgAAAAMAAAAIAAkAAgAAAAMAAAAIAAgAAgAAAAMAAAAIAAcAAgAAAAMAAAAIAAYAAgABAAIAAAAIAAUAAgACAAEAAAAIAAQAAgABAAEAAAAIAAMAAgABAAAAAAAIAAIAAgABAAMAAAAIAAEAAgAAAAMAAAAIAAAAAgAAAAMAAAAIAP//AgAAAAMAAAAIAP7/AgAAAAMAAAAHAAkAAgAAAAMAAAAHAAgAAgAAAAMAAAAHAAcAAgAAAAMAAAAHAAYAAgABAAIAAAAHAAUAAgACAAEAAAAHAAQAAgADAAAAAAAHAAMAAgAAAAMAAAAHAAIAAgAAAAMAAAAHAAEAAgAAAAMAAAAHAAAAAgAAAAMAAAAHAP//AgAAAAMAAAAHAP7/AgAAAAMAAAAGAAkAAgAAAAMAAAAGAAgAAgAAAAMAAAAGAAcAAgAAAAMAAAAGAAYAAgABAAIAAAAGAAUAAgACAAEAAAAGAAQAAgADAAAAAAAGAAMAAgAAAAMAAAAGAAIAAgAAAAMAAAAGAAEAAgAAAAMAAAAGAAAAAgAAAAMAAAAGAP//AgAAAAMAAAAGAP7/AgAAAAMAAAAFAAkAAgAAAAMAAAAFAAgAAgAAAAMAAAAFAAcAAgAAAAMAAAAFAAYAAgABAAIAAAAFAAUAAgACAAEAAAAFAAQAAgADAAAAAAAFAAMAAgAAAAMAAAAFAAIAAgAAAAMAAAAFAAEAAgAAAAMAAAAFAAAAAgAAAAMAAAAFAP//AgAAAAMAAAAFAP7/AgAAAAMAAAAEAAkAAgAAAAMAAAAEAAgAAgAAAAMAAAAEAAcAAgAAAAMAAAAEAAYAAgABAAIAAAAEAAUAAgACAAEAAAAEAAQAAgACAAAAAAAEAAMAAgADAAIAAAAEAAIAAgADAAIAAAAEAAEAAgAAAAAAAAAEAAAAAgAAAAMAAAAEAP//AgAAAAMAAAAEAP7/AgAAAAMAAAADAAkAAgAAAAMAAAADAAgAAgAAAAMAAAADAAcAAgAAAAMAAAADAAYAAgABAAIAAAADAAUAAgACAAEAAAADAAQAAgACAAEAAAADAAMAAgACAAEAAAADAAIAAgACAAEAAAADAAEAAgADAAAAAAADAAAAAgAAAAMAAAADAP//AgAAAAMAAAADAP7/AgAAAAMAAAACAAkAAgAAAAMAAAACAAgAAgAAAAMAAAACAAcAAgAAAAMAAAACAAYAAgAAAAIAAAACAAUAAgABAAAAAAACAAQAAgACAAIAAAACAAMAAgACAAEAAAACAAIAAgABAAEAAAACAAEAAgABAAMAAAACAAAAAgAAAAMAAAACAP//AgAAAAMAAAACAP7/AgAAAAMAAAABAAkAAgAAAAMAAAABAAgAAgAAAAMAAAABAAcAAgAAAAMAAAABAAYAAgAAAAMAAAABAAUAAgAAAAMAAAABAAQAAgABAAIAAAABAAMAAgACAAEAAAABAAIAAgADAAAAAAABAAEAAgAAAAMAAAABAAAAAgAAAAMAAAABAP//AgAAAAMAAAABAP7/AgAAAAMAAAAAAAkAAgAAAAMAAAAAAAgAAgAAAAMAAAAAAAcAAgAAAAMAAAAAAAYAAgAAAAMAAAAAAAUAAgAAAAMAAAAAAAQAAgABAAIAAAAAAAMAAgACAAEAAAAAAAIAAgADAAAAAAAAAAEAAgAAAAMAAAAAAAAAAgAAAAMAAAAAAP//AgAAAAMAAAAAAP7/AgAAAAMAAAD//wkAAgAAAAMAAAD//wgAAgAAAAMAAAD//wcAAgAAAAMAAAD//wYAAgAAAAMAAAD//wUAAgAAAAMAAAD//wQAAgABAAIAAAD//wMAAgACAAEAAAD//wIAAgADAAAAAAD//wEAAgAAAAMAAAD//wAAAgAAAAMAAAD/////AgAAAAMAAAD///7/AgAAAAMAAAD+/wkAAgAAAAMAAAD+/wgAAgAAAAMAAAD+/wcAAgAAAAMAAAD+/wYAAgAAAAMAAAD+/wUAAgAAAAMAAAD+/wQAAgAAAAIAAAD+/wMAAgABAAAAAAD+/wIAAgABAAMAAAD+/wEAAgAAAAMAAAD+/wAAAgAAAAMAAAD+////AgAAAAMAAAD+//7/AgAAAAMAAAA=")
tile_set = SubResource("TileSet_ge1l5")
rendering_quadrant_size = 32
physics_quadrant_size = 32
metadata/_edit_lock_ = true
[node name="Objects" type="TileMapLayer" parent="."]
y_sort_enabled = true
tile_map_data = PackedByteArray("AAADAAAAAAAAAAAAAQA=")
tile_set = SubResource("TileSet_5rqdi")
rendering_quadrant_size = 32
physics_quadrant_size = 32
[node name="Player" parent="." node_paths=PackedStringArray("tilemap") instance=ExtResource("1_ge1l5")]
position = Vector2(110, 50)
tilemap = NodePath("../TileMapLayer")
position = Vector2(110, 38)
tilemap = NodePath("../Ground")

View File

@@ -102,7 +102,7 @@ motion_mode = 1
script = ExtResource("1_3vyb7")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(-1, -1)
y_sort_enabled = true
sprite_frames = SubResource("SpriteFrames_qhqgy")
animation = &"down"
@@ -115,3 +115,10 @@ shape = SubResource("CapsuleShape2D_3vyb7")
process_callback = 0
drag_horizontal_enabled = true
drag_vertical_enabled = true
[node name="RayCast2D" type="RayCast2D" parent="."]
target_position = Vector2(0, 32)
collision_mask = 2
hit_from_inside = true
collide_with_areas = true
collide_with_bodies = false

6
scripts/interactable.gd Normal file
View File

@@ -0,0 +1,6 @@
class_name Interactable
extends Area2D
signal interacted
func interact() -> void: interacted.emit()

View File

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

View File

@@ -0,0 +1,6 @@
extends Node2D
@export var scene: PackedScene
func _on_interactable_interacted() -> void:
get_tree().change_scene_to_packed(scene)

View File

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

View File

@@ -5,6 +5,10 @@ const SPEED: int = 800
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
@onready var cam: Camera2D = $Camera2D
@onready var raycast: RayCast2D = $RayCast2D
const RAYCAST_RAGE: int = 32
@export var tilemap: TileMapLayer
var tilesize: int = 32
var position_limit_rect: Rect2
@@ -29,10 +33,25 @@ func _ready() -> void:
)
)
func _process(_delta: float) -> void:
if Input.is_action_just_pressed("interact") && raycast.is_colliding() && raycast.get_collider() is Interactable:
var interactable: Interactable = raycast.get_collider()
interactable.interact()
func _physics_process(delta: float) -> void:
if EventManager.player_free:
velocity = Input.get_vector("move_left","move_right","move_up","move_down").normalized() * delta * SPEED * 3
var input := Input.get_vector("move_left", "move_right", "move_up", "move_down").normalized()
var raycast_input := Vector2.ZERO
if abs(input.x) > abs(input.y):
raycast_input.x = sign(input.x)
elif abs(input.y) > 0:
raycast_input.y = sign(input.y)
if raycast_input != Vector2.ZERO:
raycast.target_position = raycast_input * RAYCAST_RAGE
velocity = input * delta * SPEED * 3
move_and_slide()
position = position.clamp(position_limit_rect.position, position_limit_rect.end)