feat: tavern — upgrade PlayerController to CharacterBody3D with player_controller.gd
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user