Add noclip mode (F3)

This commit is contained in:
Jens Pitkänen 2024-08-20 01:51:43 +03:00
parent 5c69f5c4df
commit 7b9a43394c
3 changed files with 28 additions and 2 deletions

View File

@ -121,6 +121,11 @@ toggle_pause_menu={
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
] ]
} }
toggle_noclip={
"deadzone": 0.5,
"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)
]
}
[internationalization] [internationalization]

View File

@ -3,11 +3,11 @@
[ext_resource type="CameraAttributesPhysical" uid="uid://cxyj2tvfksjl6" path="res://scenes/hazy_env_camera_attrs.tres" id="1_r2j1d"] [ext_resource type="CameraAttributesPhysical" uid="uid://cxyj2tvfksjl6" path="res://scenes/hazy_env_camera_attrs.tres" id="1_r2j1d"]
[ext_resource type="PackedScene" uid="uid://br315evr8x2gt" path="res://scenes/hazy_env.tscn" id="2_le85m"] [ext_resource type="PackedScene" uid="uid://br315evr8x2gt" path="res://scenes/hazy_env.tscn" id="2_le85m"]
[ext_resource type="LightmapGIData" uid="uid://bp05p4yab2ukx" path="res://scenes/demo/demo.lmbake" id="2_thfwf"] [ext_resource type="LightmapGIData" uid="uid://bp05p4yab2ukx" path="res://scenes/demo/demo.lmbake" id="2_thfwf"]
[ext_resource type="PackedScene" path="res://scenes/demo/demo_map.tscn" id="4_0ojvw"] [ext_resource type="PackedScene" uid="uid://d4fn0ljcmjdnb" path="res://scenes/demo/demo_map.tscn" id="4_0ojvw"]
[ext_resource type="PackedScene" uid="uid://wjbuh7jk50nm" path="res://scenes/player.tscn" id="10_3xiy2"] [ext_resource type="PackedScene" uid="uid://wjbuh7jk50nm" path="res://scenes/player.tscn" id="10_3xiy2"]
[ext_resource type="PackedScene" uid="uid://d02cqylu3xwos" path="res://scenes/table.tscn" id="11_7trvw"] [ext_resource type="PackedScene" uid="uid://d02cqylu3xwos" path="res://scenes/table.tscn" id="11_7trvw"]
[ext_resource type="PackedScene" uid="uid://c670g1qg5gaug" path="res://scenes/interface/pause_menu.tscn" id="11_lav3p"] [ext_resource type="PackedScene" uid="uid://c670g1qg5gaug" path="res://scenes/interface/pause_menu.tscn" id="11_lav3p"]
[ext_resource type="Material" uid="uid://bq5oqyuwekryv" path="res://textures/building_block.tres" id="12_i3ahj"] [ext_resource type="Material" uid="uid://bq5oqyuwekryv" path="res://materials/building_block.tres" id="12_i3ahj"]
[node name="Demo" type="Node3D"] [node name="Demo" type="Node3D"]

View File

@ -31,6 +31,8 @@ namespace Gmtk24 {
private float JumpBufferTime = 0; private float JumpBufferTime = 0;
private float FootstepCooldown = 0; private float FootstepCooldown = 0;
private bool NoclipEnabled = false;
public override void _UnhandledInput(InputEvent @event) { public override void _UnhandledInput(InputEvent @event) {
if (@event is InputEventMouseMotion mouseMotion && Input.MouseMode == Input.MouseModeEnum.Captured) { if (@event is InputEventMouseMotion mouseMotion && Input.MouseMode == Input.MouseModeEnum.Captured) {
var cameraSensitivity = UserSettings.Singleton.GetCameraSpeedMultipliers(); var cameraSensitivity = UserSettings.Singleton.GetCameraSpeedMultipliers();
@ -42,6 +44,19 @@ namespace Gmtk24 {
if (@event.IsActionPressed("jump")) { if (@event.IsActionPressed("jump")) {
JumpBufferTime = JumpBufferLengthSeconds; JumpBufferTime = JumpBufferLengthSeconds;
GetViewport().SetInputAsHandled();
}
if (@event.IsActionPressed("toggle_noclip")) {
NoclipEnabled = !NoclipEnabled;
if (NoclipEnabled) {
CollisionLayer = 0;
CollisionMask = 0;
} else {
CollisionLayer = 1;
CollisionMask = 1;
}
GetViewport().SetInputAsHandled();
} }
} }
@ -85,6 +100,12 @@ namespace Gmtk24 {
Input.GetActionStrength("move_backward") - Input.GetActionStrength("move_forward") Input.GetActionStrength("move_backward") - Input.GetActionStrength("move_forward")
); );
Vector3 move = Eye.Basis * moveInput; Vector3 move = Eye.Basis * moveInput;
if (NoclipEnabled) {
GlobalPosition += move * MovementSpeed * 10 * (float)delta;
return;
}
move.Y = 0; move.Y = 0;
move = move.Normalized() * Mathf.Min(1, moveInput.Length()) * MovementSpeed; move = move.Normalized() * Mathf.Min(1, moveInput.Length()) * MovementSpeed;
if (Input.IsActionPressed("sprint")) { if (Input.IsActionPressed("sprint")) {