diff --git a/src/logic-scenes/player_controller/player_controller.gd b/src/logic-scenes/player_controller/player_controller.gd index d594e0f..b1550bd 100644 --- a/src/logic-scenes/player_controller/player_controller.gd +++ b/src/logic-scenes/player_controller/player_controller.gd @@ -56,12 +56,23 @@ var crouched:bool = false: set(set_crouching): if is_node_ready(): if set_crouching and not crouched: - $PlayerAnimationPlayer.play("crouch") + if State.reduce_motion:# or true: + $PlayerAnimationPlayer.play("reduced_crouch") + elif trigger_slow_crouch:# or true: + $PlayerAnimationPlayer.play("crouch") + trigger_slow_crouch = false + else: + $PlayerAnimationPlayer.play("fast_crouch") crouched = set_crouching elif (not set_crouching and crouched) and not crouch_held: if can_stand_up(): - $PlayerAnimationPlayer.play("stand_up") - crouch_toggled = false + if State.reduce_motion:# or true: + $PlayerAnimationPlayer.play("reduced_stand_up") + elif trigger_slow_crouch:# or true: + $PlayerAnimationPlayer.play("stand_up") + trigger_slow_crouch = false + else: + $PlayerAnimationPlayer.play("fast_stand_up") crouched = set_crouching var on_crouch_cooldown:bool = false @@ -205,6 +216,12 @@ func _handle_mouse_input(event:InputEventMouseMotion): if event.relative.length() < mouse_jerk_rejection: current_mouse_rotation = event.relative +# Variables to keep track of crouch state. +var trigger_slow_crouch: bool = false +var crouch_held: bool = false +var crouch_toggled: bool = false +var cround_start_time: float = 0 + func _input(event:InputEvent): if Scenes.current_sequence != -1: return if has_stage and Scenes.current_sequence == -1: @@ -223,18 +240,22 @@ func _input(event:InputEvent): get_viewport().set_input_as_handled() if event.is_action_pressed("crouch"): + # Remember how long the key is held to tell apart toggle and hold behaviour. cround_start_time = Time.get_unix_time_from_system() - crouch_held = true if crouch_toggled: - crouched = false - #crouch_toggled is being released by crouch setter + cround_start_time = 0 + #Causes the next release action to 100% stand up the player... else: + crouch_held = true crouched = true - if event.is_action_released("crouch"): + elif event.is_action_released("crouch"): crouch_held = false + + # Toggles crouch in case the player just pressed the button indicating they want to toggle crouch. if Time.get_unix_time_from_system() > cround_start_time + 0.5: - if crouched: + if crouched and can_stand_up(): + crouch_toggled = false crouched = false else: crouch_toggled = true @@ -247,24 +268,15 @@ func scene_finished(_id, repeat: bool): if repeat: State.take_stage(self, true) -var crouch_held: bool = false -var crouch_toggled: bool = false -var cround_start_time: float = 0 func _on_bed_enter(_body): - return if not (crouched or on_crouch_cooldown): - $PlayerAnimationPlayer.queue("crouch") - var tween = create_tween() - tween.tween_property(self, "max_speed", max_speed/2, 0.3) + trigger_slow_crouch = true crouched = true func _on_bed_exit(_body): - return - if crouched: + if crouched and not crouch_held: + trigger_slow_crouch = true crouched = false - $PlayerAnimationPlayer.queue("stand_up") - var tween = create_tween() - tween.tween_property(self, "max_speed", max_speed*2, 1) on_crouch_cooldown = true await get_tree().create_timer(1.0).timeout diff --git a/src/logic-scenes/player_controller/player_controller.tscn b/src/logic-scenes/player_controller/player_controller.tscn index 16b68e8..cb132cd 100644 --- a/src/logic-scenes/player_controller/player_controller.tscn +++ b/src/logic-scenes/player_controller/player_controller.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=3 uid="uid://mkccbig41bqb"] +[gd_scene load_steps=16 format=3 uid="uid://mkccbig41bqb"] [ext_resource type="Script" uid="uid://bk618uyhghswx" path="res://logic-scenes/player_controller/player_controller.gd" id="1_0b4mi"] @@ -8,6 +8,19 @@ friction = 0.0 [sub_resource type="SeparationRayShape3D" id="SeparationRayShape3D_hpoj0"] length = 1.29801 +[sub_resource type="Gradient" id="Gradient_hpoj0"] +interpolation_mode = 2 +interpolation_color_space = 1 +offsets = PackedFloat32Array(0.17551, 0.408163, 0.57551, 0.832653) +colors = PackedColorArray(0.26784, 0.10556, 0.211286, 0, 0.15224, 0.0352, 0.22, 0.529412, 0.0288, 0.0616, 0.16, 0.901961, 0.00243532, 0.0191495, 0.101523, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_x6v75"] +gradient = SubResource("Gradient_hpoj0") +width = 1024 +height = 1024 +fill = 1 +fill_from = Vector2(0.5, 0.5) + [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hpoj0"] radius = 0.3 height = 1.2 @@ -29,15 +42,127 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation_degrees") +tracks/1/path = NodePath("PlayerCollision:shape:height") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, +"values": [1.2] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PlayerCollision:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0.6, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:max_speed") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, "values": [Vector3(0, 0, 0)] } +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:modulate") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 0)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1.5, 1.5)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:pivot_offset") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(960, 960)] +} + +[sub_resource type="Animation" id="12"] +resource_name = "crouch" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Yaw:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.8, 1.5, 1.83333), +"transitions": PackedFloat32Array(1.36604, 1, 1, 1), +"update": 0, +"values": [Vector3(0, 1.22534, 0), Vector3(0, 0.5, 0), Vector3(0, 0.27, 0), Vector3(0, 0.327816, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("PlayerCollision:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.01), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0.6, 0), Vector3(0, 0.3, 0)] +} tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true @@ -45,39 +170,38 @@ tracks/2/path = NodePath("PlayerCollision:shape:height") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0, 1.01), +"transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [1.2] +"values": [1.2, 0.6] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("PlayerCollision:position") +tracks/3/path = NodePath(".:max_speed") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0, 0.69), +"transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [Vector3(0, 0.6, 0)] +"values": [3.0, 1.5] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath(".:max_speed") -tracks/4/interp = 1 +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation") +tracks/4/interp = 2 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), +"times": PackedFloat32Array(0, 0.666667, 1.3, 1.73333, 2), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), "update": 0, -"values": [3.0] +"values": [Vector3(0, 0, 0), Vector3(-0.261799, 0, -0.0872665), Vector3(-0.174533, 0, 0.0523599), Vector3(0, 0, 0), Vector3(0, 0, 0)] } -[sub_resource type="Animation" id="12"] -resource_name = "crouch" -length = 3.0 +[sub_resource type="Animation" id="Animation_d8nww"] +resource_name = "fast_crouch" tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -85,63 +209,63 @@ tracks/0/path = NodePath("Yaw:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 1.2, 1.9, 2.6), -"transitions": PackedFloat32Array(1.36604, 1, 1, 1), +"times": PackedFloat32Array(0, 0.333333, 1), +"transitions": PackedFloat32Array(1.36604, 1, 1), "update": 0, -"values": [Vector3(0, 1.22534, 0), Vector3(0, 0.5, 0), Vector3(0, 0.27, 0), Vector3(0, 0.327816, 0)] +"values": [Vector3(0, 1.22534, 0), Vector3(0, 0.5, 0), Vector3(0, 0.327816, 0)] } tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation_degrees") -tracks/1/interp = 2 +tracks/1/path = NodePath("PlayerCollision:position") +tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0, 0.6, 1.6, 2.4, 3), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"times": PackedFloat32Array(0, 1.01), +"transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [Vector3(0, 0, 0), Vector3(-30, 0, -10), Vector3(-20, 0, 3), Vector3(0, 0, 0), Vector3(0, 0, 0)] +"values": [Vector3(0, 0.6, 0), Vector3(0, 0.3, 0)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("PlayerCollision:position") +tracks/2/path = NodePath("PlayerCollision:shape:height") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0, 1.01), "transitions": PackedFloat32Array(1, 1), "update": 0, -"values": [Vector3(0, 0.6, 0), Vector3(0, 0.3, 0)] +"values": [1.2, 0.6] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("PlayerCollision:shape:height") +tracks/3/path = NodePath(".:max_speed") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { -"times": PackedFloat32Array(0, 1.01), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [1.2, 0.6] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath(".:max_speed") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { "times": PackedFloat32Array(0, 0.69), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [3.0, 1.5] } +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.2, 0.833333, 1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0.174533, 0, 0), Vector3(0, 0, 0), Vector3(0, 0, 0)] +} -[sub_resource type="Animation" id="14"] -resource_name = "stand_up" -length = 3.0 +[sub_resource type="Animation" id="Animation_x6v75"] +resource_name = "fast_stand_up" +length = 1.2 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true @@ -149,7 +273,271 @@ tracks/0/path = NodePath("Yaw:position") tracks/0/interp = 2 tracks/0/loop_wrap = true tracks/0/keys = { -"times": PackedFloat32Array(0, 0.9, 1.8, 3), +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1.51572, 1), +"update": 0, +"values": [Vector3(0, 0.327816, 0), Vector3(0, 1.22534, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("PlayerCollision:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.01), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0.3, 0), Vector3(0, 0.6, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PlayerCollision:shape:height") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1.03333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.6, 1.2] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:max_speed") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.233333, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [1.5, 3.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.333333, 0.866667, 1.2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(-0.174533, 0, 0), Vector3(0, 0, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_b3jgb"] +resource_name = "reduced_crouch" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Yaw:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.233333, 0.933333, 1.73333), +"transitions": PackedFloat32Array(1.36604, 1, 1), +"update": 0, +"values": [Vector3(0, 1.22534, 0), Vector3(0, 0.5, 0), Vector3(0, 0.327816, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("PlayerCollision:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.01), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0.6, 0), Vector3(0, 0.3, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PlayerCollision:shape:height") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1.01), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [1.2, 0.6] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:max_speed") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.69), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [3.0, 1.5] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:modulate") +tracks/5/interp = 2 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.5, 1.53333, 2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:scale") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.966667, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1.5, 1.5), Vector2(1, 1), Vector2(1.5, 1.5)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:pivot_offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(960, 960)] +} + +[sub_resource type="Animation" id="Animation_hpoj0"] +resource_name = "reduced_stand_up" +length = 2.0 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Yaw:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.433333, 1.6), +"transitions": PackedFloat32Array(0.554785, 0.63728), +"update": 0, +"values": [Vector3(0, 0.327816, 0), Vector3(0, 1.22534, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("PlayerCollision:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 1.23333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector3(0, 0.3, 0), Vector3(0, 0.6, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PlayerCollision:shape:height") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 1.23333), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.6, 1.2] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:max_speed") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [1.5, 3.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 2), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [true, false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:modulate") +tracks/5/interp = 2 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.5, 1.53333, 2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:scale") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.966667, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1.5, 1.5), Vector2(1, 1), Vector2(1.5, 1.5)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Yaw/Pitch/Mount/Camera3D/TextureRect:pivot_offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(960, 960)] +} + +[sub_resource type="Animation" id="14"] +resource_name = "stand_up" +length = 2.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Yaw:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.9, 1.8, 2.26667), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, "values": [Vector3(0, 0.327816, 0), Vector3(0, 0.331, 0), Vector3(0, 1, 0), Vector3(0, 1.22534, 0)] @@ -157,56 +545,60 @@ tracks/0/keys = { tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation_degrees") -tracks/1/interp = 2 +tracks/1/path = NodePath("PlayerCollision:position") +tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0, 0.6, 1.3, 2.2, 3), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0), Vector3(-4.79133, 3.17287, -3.71499), Vector3(24.594, -3.154, -4.794), Vector3(0.103793, -1.69217, -1.78899), Vector3(0, 0, 0)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("PlayerCollision:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { "times": PackedFloat32Array(0, 1.01), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [Vector3(0, 0.3, 0), Vector3(0, 0.6, 0)] } -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("PlayerCollision:shape:height") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("PlayerCollision:shape:height") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { "times": PackedFloat32Array(0, 1.03333), "transitions": PackedFloat32Array(1, 1), "update": 0, "values": [0.6, 1.2] } +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:max_speed") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.366667, 1.55, 2.5), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [1.5, 1.0, 3.0] +} tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath(".:max_speed") -tracks/4/interp = 1 +tracks/4/path = NodePath("Yaw/Pitch/Mount/Camera3D:rotation") +tracks/4/interp = 2 tracks/4/loop_wrap = true tracks/4/keys = { -"times": PackedFloat32Array(0.9, 2.2), -"transitions": PackedFloat32Array(1, 1), +"times": PackedFloat32Array(0, 0.733333, 1.5, 2.14, 2.5), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), "update": 0, -"values": [1.5, 3.0] +"values": [Vector3(0, 0, 0), Vector3(-0.0872665, 0.0523599, -0.0872665), Vector3(0.261799, -0.0872665, -0.0872665), Vector3(0, 0, 0), Vector3(0, 0, 0)] } [sub_resource type="AnimationLibrary" id="AnimationLibrary_xbx3w"] _data = { &"RESET": SubResource("11"), &"crouch": SubResource("12"), +&"fast_crouch": SubResource("Animation_d8nww"), +&"fast_stand_up": SubResource("Animation_x6v75"), +&"reduced_crouch": SubResource("Animation_b3jgb"), +&"reduced_stand_up": SubResource("Animation_hpoj0"), &"stand_up": SubResource("14") } @@ -214,6 +606,8 @@ _data = { radius = 0.3 [node name="PlayerController" type="RigidBody3D"] +collision_layer = 3 +collision_mask = 3 axis_lock_angular_x = true axis_lock_angular_y = true axis_lock_angular_z = true @@ -248,6 +642,19 @@ collision_mask = 16 transform = Transform3D(-1, 0, -8.74229e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, 0) shape = SubResource("SeparationRayShape3D_hpoj0") +[node name="TextureRect" type="TextureRect" parent="Yaw/Pitch/Mount/Camera3D"] +visible = false +modulate = Color(1, 1, 1, 0) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(1.5, 1.5) +pivot_offset = Vector2(960, 960) +texture = SubResource("GradientTexture2D_x6v75") +expand_mode = 4 + [node name="PlayerCollision" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, -1, 8.74228e-08, 0, -8.74228e-08, -1, 0, 0.6, 0) shape = SubResource("CapsuleShape3D_hpoj0") @@ -256,6 +663,7 @@ shape = SubResource("CapsuleShape3D_hpoj0") libraries = { &"": SubResource("AnimationLibrary_xbx3w") } +autoplay = "RESET" [node name="CrouchDetector" type="Area3D" parent="."] collision_layer = 3 diff --git a/src/project.godot b/src/project.godot index 4d89afe..4ed12fb 100644 --- a/src/project.godot +++ b/src/project.godot @@ -76,6 +76,7 @@ ui_menu={ "deadzone": 0.5, "events": [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":4194370,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) , 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) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null) ] } player_right={ @@ -150,7 +151,7 @@ zoom_out_mouse={ } zoom_in_controller={ "deadzone": 0.5, -"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":4,"axis_value":1.0,"script":null) +"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":5,"axis_value":1.0,"script":null) ] } reset_demo={