Added debug movement mode

This commit is contained in:
Rob Kelly 2025-09-29 16:45:53 -06:00
parent 150f3a57a4
commit ec02444014
5 changed files with 75 additions and 1 deletions

View File

@ -91,6 +91,11 @@ sprint={
"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":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
sneak={
"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":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
@ -106,6 +111,26 @@ pause={
"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":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
debug_1={
"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":4194332,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
debug_2={
"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":4194333,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
debug_3={
"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":4194334,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
debug_4={
"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":4194335,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[layer_names]

View File

@ -0,0 +1,32 @@
class_name DebugMovement extends Node
## Movement controller for debug flight
const ACCELERATION := 10.0
@export var enabled := false
@export var normal_speed := 160.0
@export var fast_speed := 320.0
@onready var character: CharacterBody3D = get_parent()
func get_speed() -> float:
return fast_speed if Input.is_action_pressed("sprint") else normal_speed
func _physics_process(delta: float) -> void:
if not enabled:
return
var forward_input := Input.get_axis("move_back", "move_forward")
var side_input := Input.get_axis("move_right", "move_left")
var vertical_input := Input.get_axis("sneak", "jump")
var movement := Vector3(-side_input, vertical_input, -forward_input) * get_speed() * delta
var camera := get_viewport().get_camera_3d()
var motion := camera.basis * movement
var weight := 1.0 - exp(-ACCELERATION * delta)
character.velocity = character.velocity.lerp(motion, weight)
character.move_and_slide()

View File

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

View File

@ -1,9 +1,18 @@
class_name Player extends CharacterBody3D
## The instance of the current player in the game world.
@onready var movement_controller: MovementController = %MovementController
@onready var debug_movement: DebugMovement = %DebugMovement
## Global singleton accessor
static var instance: Player
func _init() -> void:
Player.instance = self
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("debug_1"):
movement_controller.enabled = not movement_controller.enabled
debug_movement.enabled = not debug_movement.enabled

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=22 format=3 uid="uid://dtbulshrxetes"]
[gd_scene load_steps=23 format=3 uid="uid://dtbulshrxetes"]
[ext_resource type="Script" uid="uid://bihaf1xlwpkdo" path="res://src/player/player.gd" id="1_5f2sf"]
[ext_resource type="Script" uid="uid://f3kssctvn2bo" path="res://src/player/camera/camera_controller.gd" id="1_mf2ua"]
@ -10,6 +10,7 @@
[ext_resource type="Script" uid="uid://c0nxcunx0fo4r" path="res://src/player/movement/movement_controller.gd" id="6_jiejy"]
[ext_resource type="Script" uid="uid://d11erhxna68vd" path="res://src/player/movement/player_input_controller.gd" id="7_o822w"]
[ext_resource type="Script" uid="uid://dao84umfatnid" path="res://src/player/debug_hud.gd" id="9_l271a"]
[ext_resource type="Script" uid="uid://htwqrc73xg7q" path="res://src/player/movement/debug_movement.gd" id="10_ylhto"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_qnmj6"]
@ -106,6 +107,7 @@ script = ExtResource("4_244u8")
metadata/_custom_type_script = "uid://032jyhgkb2rv"
[node name="MovementController" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("6_jiejy")
metadata/_custom_type_script = "uid://c0nxcunx0fo4r"
@ -113,6 +115,11 @@ metadata/_custom_type_script = "uid://c0nxcunx0fo4r"
script = ExtResource("7_o822w")
metadata/_custom_type_script = "uid://d11erhxna68vd"
[node name="DebugMovement" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("10_ylhto")
metadata/_custom_type_script = "uid://htwqrc73xg7q"
[node name="DebugHUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player")]
script = ExtResource("9_l271a")
player = NodePath("..")