feat: tavern — upgrade PlayerController to CharacterBody3D with player_controller.gd

This commit is contained in:
2026-04-16 00:25:24 +02:00
parent a8f78bd4cd
commit 67cc288d28

View File

@@ -1,6 +1,7 @@
extends Node3D
const ROOM_COUNT := 8
const INTERACT_DISTANCE := 2.5
var _modifier: int = 0
var _roll_log: RichTextLabel
@@ -45,21 +46,40 @@ func _broadcast_camera_transform() -> void:
func _spawn_player(room_index: int) -> void:
var room_num := (room_index % ROOM_COUNT) + 1 # Zimmer heißen Room1..Room8
var spawn_path := "UpperFloor/Room%d/SpawnPoint" % room_num
var spawn := get_node_or_null(spawn_path) as Marker3D
var room_name := "Room%d" % (room_index % ROOM_COUNT + 1)
var spawn := get_node("UpperFloor/%s/SpawnPoint" % room_name) as Marker3D
if spawn == null:
push_error("[Tavern] SpawnPoint nicht gefunden: %s" % spawn_path)
push_error("[Tavern] SpawnPoint nicht gefunden: %s" % room_name)
return
var controller := Node3D.new()
var controller := CharacterBody3D.new()
controller.name = "PlayerController"
controller.set_script(load("res://scripts/player_controller.gd"))
var shape := CollisionShape3D.new()
var capsule := CapsuleShape3D.new()
capsule.radius = 0.3
capsule.height = 1.8
shape.shape = capsule
shape.position = Vector3(0, 0.9, 0)
controller.add_child(shape)
var camera := Camera3D.new()
camera.name = "Camera3D"
camera.current = true
camera.position = Vector3(0, 1.6, 0)
controller.add_child(camera)
var ray := RayCast3D.new()
ray.name = "InteractRay"
ray.target_position = Vector3(0, 0, -INTERACT_DISTANCE)
ray.enabled = true
camera.add_child(ray)
add_child(controller)
controller.global_transform = spawn.global_transform
print("[Tavern] Spieler gespawnt in %s" % spawn_path)
controller.global_position = spawn.global_position
controller.global_rotation = spawn.global_rotation
print("[Tavern] Spieler gespawnt in %s" % room_name)
func _setup_dice_ui() -> void: