fix #226 resolving logic errors in ducking behavior and adding alternate animations

This commit is contained in:
betalars 2025-09-05 01:50:38 +02:00
parent 5bb5a6d112
commit 5a937a9f1b
3 changed files with 512 additions and 91 deletions

View File

@ -56,12 +56,23 @@ var crouched:bool = false:
set(set_crouching):
if is_node_ready():
if set_crouching and not crouched:
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():
if State.reduce_motion:# or true:
$PlayerAnimationPlayer.play("reduced_stand_up")
elif trigger_slow_crouch:# or true:
$PlayerAnimationPlayer.play("stand_up")
crouch_toggled = false
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

View File

@ -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

View File

@ -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={