#room_manager.gd
extends Node
func load_room(room: PackedScene, door: String, player: CharacterBody2D):
if get_child_count() > 0:
var old_room = get_child(0)
old_room.queue_free()
var new_room = room.instantiate()
add_child(new_room)
for child in new_room.get_children():
if child.is_in_group('door'):
child.door_used.connect(Callable(self, "load_room"))
var target_door = new_room.find_child(door)
if target_door:
var marker = target_door.get_node('Marker2D')
player.global_position = marker.global_position
else:
print("Can't find door!")```
#Room chance system for 2D game.
3 messages · Page 1 of 1 (latest)
#player.gd
extends CharacterBody2D
const SPEED = 300.0
var current_door = null
func _process(delta: float) -> void:
if Input.is_action_just_pressed("interact"):
if current_door != null:
current_door.send_info()
func _physics_process(delta: float) -> void:
var direction := Input.get_axis("ui_left", "ui_right")
if direction:
velocity.x = direction * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
move_and_slide()
#main_scene.gd
extends Node
@export var start_room: PackedScene
@export var spawnpoint: String
@onready var room_manager: Node = $RoomManager
@onready var player: CharacterBody2D = $Player
func _ready() -> void:
if start_room:
room_manager.load_room(start_room,spawnpoint,player)