diff --git a/Scenes/GUI/MainMenu.tscn b/Scenes/GUI/MainMenu.tscn index f7a7aeb..3bbadb7 100644 --- a/Scenes/GUI/MainMenu.tscn +++ b/Scenes/GUI/MainMenu.tscn @@ -546,7 +546,8 @@ Open Curtains: C Debug Info: F3 Open Menu: ESC Zoom In/Out: Mouse Wheel -Zoom Reset: Middle Mouse Button" +Flashlight Size: Alt+Mouse Wheel +Respawn: R" autowrap_mode = 2 [node name="CreditsScreen" type="Control" parent="."] diff --git a/Scripts/Player/Player.gd b/Scripts/Player/Player.gd index 5361beb..1cb9d5d 100644 --- a/Scripts/Player/Player.gd +++ b/Scripts/Player/Player.gd @@ -2,6 +2,8 @@ class_name Player extends CharacterBody3D @export var current_map: String +var startPosition: Vector3 + var SPEED_BASE: float = 2 var SPEED_CROUCHED: float = 1 var SPEED_RUNNING: float = 4 @@ -40,6 +42,7 @@ func _ready() -> void: capture_mouse() if ($Camera.fov != GlobalVariables.FOV): $Camera.fov = GlobalVariables.FOV + startPosition = self.position func _unhandled_input(event: InputEvent) -> void: if (interact): @@ -64,6 +67,25 @@ func _unhandled_input(event: InputEvent) -> void: pass elif event.is_action_pressed(&"freeroam_debug_menu"): $DebugMenu.visible = !$DebugMenu.visible + elif event.is_action_pressed(&"freeroam_respawn"): + self.position = startPosition + elif event.is_action_pressed(&"freeroam_flashlight_zoom_in"): + if ($Camera/Flashlight.visible): + if ($Camera/Flashlight.spot_angle > 2): + $Camera/Flashlight.spot_angle -= 2 + $FlashlightSFX.pitch_scale = $Camera/Flashlight.spot_angle/10.0 + $FlashlightSFX.play() + elif event.is_action_pressed(&"freeroam_flashlight_zoom_out"): + if ($Camera/Flashlight.visible): + if ($Camera/Flashlight.spot_angle < 88): + $Camera/Flashlight.spot_angle += 2 + $FlashlightSFX.pitch_scale = $Camera/Flashlight.spot_angle/10.0 + $FlashlightSFX.play() + elif event.is_action_pressed(&"freeroam_flashlight_zoom_reset"): + if ($Camera/Flashlight.visible): + $Camera/Flashlight.spot_angle = 30 + $FlashlightSFX.pitch_scale = $Camera/Flashlight.spot_angle/10.0 + $FlashlightSFX.play() elif event.is_action_pressed(&"freeroam_camera_zoom_in"): if ($Camera.fov > 2): $Camera.fov -= 2 @@ -121,6 +143,9 @@ func _physics_process(delta: float) -> void: if mouse_captured: _handle_joypad_camera_rotation(delta) velocity = _walk(delta) + _gravity(delta) + _jump(delta) move_and_slide() + if (self.position.y < -20): + jump_vel = Vector3(0, 50, 0) + $BoingSFX.play() func capture_mouse() -> void: Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) diff --git a/Scripts/Player/Player.tscn b/Scripts/Player/Player.tscn index 6b4b90c..7aadfad 100644 --- a/Scripts/Player/Player.tscn +++ b/Scripts/Player/Player.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=5 format=3 uid="uid://cdk6hwb4hi2wc"] +[gd_scene load_steps=7 format=3 uid="uid://cdk6hwb4hi2wc"] [ext_resource type="Script" uid="uid://b0c02p6ckmpdq" path="res://Scripts/Player/Player.gd" id="1_2f8j2"] [ext_resource type="PackedScene" uid="uid://cd67bfok34xhy" path="res://Scenes/GUI/InGameMenu.tscn" id="2_0s4r2"] [ext_resource type="PackedScene" uid="uid://fjveglbs1vfv" path="res://Scenes/GUI/DebugMenu.tscn" id="3_ejydr"] +[ext_resource type="AudioStream" uid="uid://gu2qnrfyvk0m" path="res://UI/Sounds/boing.wav" id="4_7s4cc"] +[ext_resource type="AudioStream" uid="uid://bd13mqgeswusd" path="res://UI/Sounds/flashlight_click.wav" id="5_nckbs"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ejydr"] radius = 0.3 @@ -25,6 +27,7 @@ visible = false light_color = Color(1, 0.960784, 0.85098, 1) light_energy = 5.0 shadow_enabled = true +shadow_bias = 1.0 spot_range = 1000.0 spot_angle = 30.0 spot_angle_attenuation = 0.25 @@ -35,3 +38,10 @@ mouse_filter = 2 [node name="InGameMenu" parent="." instance=ExtResource("2_0s4r2")] visible = false + +[node name="BoingSFX" type="AudioStreamPlayer" parent="."] +stream = ExtResource("4_7s4cc") + +[node name="FlashlightSFX" type="AudioStreamPlayer" parent="."] +stream = ExtResource("5_nckbs") +volume_db = -1.0 diff --git a/UI/Sounds/boing.wav b/UI/Sounds/boing.wav new file mode 100644 index 0000000..61f1d7a Binary files /dev/null and b/UI/Sounds/boing.wav differ diff --git a/UI/Sounds/boing.wav.import b/UI/Sounds/boing.wav.import new file mode 100644 index 0000000..350b521 --- /dev/null +++ b/UI/Sounds/boing.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://gu2qnrfyvk0m" +path="res://.godot/imported/boing.wav-3e30597891eb30a472f3b93e39272c33.sample" + +[deps] + +source_file="res://UI/Sounds/boing.wav" +dest_files=["res://.godot/imported/boing.wav-3e30597891eb30a472f3b93e39272c33.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/UI/Sounds/flashlight_click.wav b/UI/Sounds/flashlight_click.wav new file mode 100644 index 0000000..055e09b Binary files /dev/null and b/UI/Sounds/flashlight_click.wav differ diff --git a/UI/Sounds/flashlight_click.wav.import b/UI/Sounds/flashlight_click.wav.import new file mode 100644 index 0000000..35ff9e8 --- /dev/null +++ b/UI/Sounds/flashlight_click.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bd13mqgeswusd" +path="res://.godot/imported/flashlight_click.wav-045ee61892a45745c4f95a53eafba64d.sample" + +[deps] + +source_file="res://UI/Sounds/flashlight_click.wav" +dest_files=["res://.godot/imported/flashlight_click.wav-045ee61892a45745c4f95a53eafba64d.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/UI/Sounds/ui_select.wav b/UI/Sounds/ui_select.wav new file mode 100644 index 0000000..792bd19 Binary files /dev/null and b/UI/Sounds/ui_select.wav differ diff --git a/UI/Sounds/ui_select.wav.import b/UI/Sounds/ui_select.wav.import new file mode 100644 index 0000000..899d512 --- /dev/null +++ b/UI/Sounds/ui_select.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dmn3kqd4rdlh6" +path="res://.godot/imported/ui_select.wav-822850e003dd35cb22f9869939ace729.sample" + +[deps] + +source_file="res://UI/Sounds/ui_select.wav" +dest_files=["res://.godot/imported/ui_select.wav-822850e003dd35cb22f9869939ace729.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2 diff --git a/project.godot b/project.godot index c2e582e..4ca716f 100644 --- a/project.godot +++ b/project.godot @@ -539,6 +539,26 @@ freeroam_camera_zoom_reset={ "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":3,"canceled":false,"pressed":false,"double_click":false,"script":null) ] } +freeroam_respawn={ +"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":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) +] +} +freeroam_flashlight_zoom_out={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +freeroam_flashlight_zoom_in={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} +freeroam_flashlight_zoom_reset={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":true,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":3,"canceled":false,"pressed":false,"double_click":false,"script":null) +] +} [rendering]