Improve user experience: Add movement on the Y-axis, Show FPS. List options backwards (#1283)

Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
This commit is contained in:
Dmitry
2025-11-26 19:18:40 +03:00
committed by GitHub
parent 156044e6dd
commit bf544aefd9
4 changed files with 41 additions and 8 deletions

View File

@@ -30,14 +30,16 @@ func _input(input_event: InputEvent) -> void:
func _process(delta: float) -> void:
var motion := Vector3(
Input.get_axis(&"move_left", &"move_right"),
0,
0.0,
Input.get_axis(&"move_forward", &"move_back")
)
var motion_y: float = Input.get_axis(&"move_down", &"move_up")
# Normalize motion to prevent diagonal movement from being
# `sqrt(2)` times faster than straight movement.
motion = motion.normalized()
velocity += MOVE_SPEED * delta * (transform.basis * motion)
velocity += Vector3(0.0, MOVE_SPEED * delta * motion_y, 0.0)
velocity *= 0.85
position += velocity

View File

@@ -77,6 +77,16 @@ toggle_mouse_capture={
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194341,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
move_up={
"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)
]
}
move_down={
"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":81,"key_label":0,"unicode":113,"location":0,"echo":false,"script":null)
]
}
[rendering]

View File

@@ -13,7 +13,7 @@ enum ReflectionProbeMode {
NONE,
ONCE,
ALWAYS,
MAX,
MAX, # Maximum value of the enum, used internally.
}
enum SSILMode {
@@ -59,6 +59,7 @@ var is_compatibility: bool = false
@onready var lightmap_gi_all_data: LightmapGIData = $LightmapGIAll.light_data
@onready var environment: Environment = $WorldEnvironment.environment
@onready var gi_mode_label: Label = $GIMode
@onready var fps: Label = $FPS
@onready var reflection_probe_mode_label: Label = $ReflectionProbeMode
@onready var reflection_probe: ReflectionProbe = $Camera/ReflectiveSphere/ReflectionProbe
@onready var ssil_mode_label: Label = $SSILMode
@@ -95,19 +96,26 @@ Escape or F10: Toggle mouse capture"""
func _input(input_event: InputEvent) -> void:
if input_event.is_action_pressed(&"cycle_gi_mode"):
var incr: int = -1 if Input.is_key_pressed(KEY_SHIFT) else 1
if is_compatibility:
# Only LightmapGI is supported in Compatibility.
# Note that the actual GI mode is the opposite of what's being set here, due to a bug
# in the Compatibility rendering method.
set_gi_mode(wrapi(gi_mode + 1, 0, GIMode.VOXEL_GI))
set_gi_mode(wrapi(gi_mode + incr, 0, GIMode.VOXEL_GI))
else:
set_gi_mode(wrapi(gi_mode + 1, 0, GIMode.MAX))
set_gi_mode(wrapi(gi_mode + incr, 0, GIMode.MAX))
if input_event.is_action_pressed(&"cycle_reflection_probe_mode"):
set_reflection_probe_mode(wrapi(reflection_probe_mode + 1, 0, ReflectionProbeMode.MAX))
var incr: int = -1 if Input.is_key_pressed(KEY_SHIFT) else 1
set_reflection_probe_mode(wrapi(reflection_probe_mode + incr, 0, ReflectionProbeMode.MAX))
if input_event.is_action_pressed(&"cycle_ssil_mode"):
set_ssil_mode(wrapi(ssil_mode + 1, 0, SSILMode.MAX))
var incr: int = -1 if Input.is_key_pressed(KEY_SHIFT) else 1
set_ssil_mode(wrapi(ssil_mode + incr, 0, SSILMode.MAX))
func _physics_process(_delta: float) -> void:
fps.text = "%d FPS (%.2f mspf)" % [Engine.get_frames_per_second(), 1000.0 / Engine.get_frames_per_second()]
func set_gi_mode(p_gi_mode: GIMode) -> void:

View File

@@ -124,7 +124,7 @@ transform = Transform3D(1.4, 0, 0, 0, 1, 0, 0, 0, 0.25, -0.681709, -0.108265, 25
surface_material_override/0 = SubResource("StandardMaterial3D_1n5k1")
[node name="Camera" type="Camera3D" parent="."]
transform = Transform3D(-0.997523, -0.00719588, 0.0699685, -8.94368e-09, 0.994753, 0.102305, -0.0703375, 0.102052, -0.992289, 11.7976, 1.49898, 9.54247)
transform = Transform3D(-0.99752325, -0.0071959156, 0.069968455, -8.943681e-09, 0.99475306, 0.1023054, -0.07033751, 0.10205201, -0.9922893, 11.7976, 1.49898, 9.54247)
script = ExtResource("6")
[node name="Box" type="MeshInstance3D" parent="Camera"]
@@ -158,7 +158,7 @@ enable_shadows = true
ambient_mode = 0
[node name="BlobShadow" type="Decal" parent="Camera/ReflectiveSphere"]
transform = Transform3D(1, -1.37668e-14, 0, 1.33227e-15, 1, 1.42109e-14, 0, 0, 1, 0, -1, -1.90735e-06)
transform = Transform3D(1, -1.3766786e-14, 0, 1.3322678e-15, 1, 1.5987212e-14, 0, -2.842171e-14, 1, 0, -1, -1.9073486e-06)
size = Vector3(2.5, 4, 2.5)
texture_albedo = SubResource("GradientTexture2D_uu8pf")
albedo_mix = 0.9
@@ -175,6 +175,19 @@ theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 4
text = "Global illumination: None (Fastest)"
[node name="FPS" type="Label" parent="."]
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -164.0
offset_top = 16.0
offset_right = -16.0
offset_bottom = 42.0
grow_horizontal = 0
theme_override_colors/font_outline_color = Color(0, 0, 0, 1)
theme_override_constants/outline_size = 4
text = "60 FPS (16.67 mspf)"
[node name="ReflectionProbeMode" type="Label" parent="."]
offset_left = 16.0
offset_top = 48.0