From 8d1e7ebb4fbac696cec1070546d8ca6b652dfe75 Mon Sep 17 00:00:00 2001 From: Minimata Date: Tue, 20 Jan 2026 13:23:42 +0100 Subject: [PATCH] some jumping animations --- player_controller/PlayerController.tscn | 1 + player_controller/Scripts/PlayerController.cs | 14 +- scenes/enemies/flying_enemy/flying_enemy.tscn | 3 +- .../grounded_enemy/grounded_enemy.tscn | 4 +- systems/head/HeadSystem.cs | 12 +- systems/head/fp_blend_tree.tres | 49 +++- systems/head/fp_state_machine.tres | 18 +- systems/head/head_system.tscn | 218 +++++++++++------- 8 files changed, 199 insertions(+), 120 deletions(-) diff --git a/player_controller/PlayerController.tscn b/player_controller/PlayerController.tscn index 028c4ff9..b3f07fce 100644 --- a/player_controller/PlayerController.tscn +++ b/player_controller/PlayerController.tscn @@ -85,6 +85,7 @@ DecelerationFloor = 3.0 AccelerationAir = 0.8 DecelerationAir = 0.02 Weight = 4.0 +MantleTime = 0.3 MantlePath = ExtResource("2_6lejt") MantleDashStrength = 25.0 MantleJumpStartVelocity = 15.0 diff --git a/player_controller/Scripts/PlayerController.cs b/player_controller/Scripts/PlayerController.cs index b88c7c0f..30aa2c6c 100644 --- a/player_controller/Scripts/PlayerController.cs +++ b/player_controller/Scripts/PlayerController.cs @@ -324,6 +324,7 @@ public partial class PlayerController : CharacterBody3D, private Transition _onJumpFromWall; private Transition _onJumpFromWallFalling; private Transition _onLeaveWallFromRun; + private Transition _onAirborneToGrounded; private Transition _onGroundSlideJump; private Transition _onAirGlideDoubleJump; @@ -448,6 +449,7 @@ public partial class PlayerController : CharacterBody3D, _onWallHanging = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Hanging")); _onWallRunning = StateChartState.Of(GetNode("StateChart/Root/Movement/OnWall/Running")); _onLeaveWallFromRun = Transition.Of(GetNode("StateChart/Root/Movement/OnWall/Running/OnLeaveWall")); + _onAirborneToGrounded = Transition.Of(GetNode("StateChart/Root/Movement/Airborne/OnGrounded")); // State timers _powerCooldownTimer = GetNode("PowerCooldown"); @@ -551,6 +553,7 @@ public partial class PlayerController : CharacterBody3D, _onJumpFromWall.Taken += OnJumpFromWall; _onJumpFromWallFalling.Taken += OnJumpFromWall; _onLeaveWallFromRun.Taken += OnLeaveWallFromRun; + _onAirborneToGrounded.Taken += OnAirborneToGrounded; } /////////////////////////// @@ -645,6 +648,11 @@ public partial class PlayerController : CharacterBody3D, } } + public void OnAirborneToGrounded() + { + HeadSystem.OnJumpEnded(); + } + public bool IsGroundLike() { return GroundDetector.GetCollisionResult().Count > 0; @@ -1155,7 +1163,8 @@ public partial class PlayerController : CharacterBody3D, _playerState.SendEvent("mantle"); return; } - + + HeadSystem.OnJumpStarted(); if (WallHugSystem.IsWallHugging()) { _playerState.SendEvent("wall_jump"); @@ -1280,11 +1289,10 @@ public partial class PlayerController : CharacterBody3D, _mantlePath.Setup(transform, curve); _mantleStartPosition = GlobalPosition; - var curveLength = curve.GetBakedLength(); var tween = GetTree().CreateTween(); tween.SetTrans(Tween.TransitionType.Linear); tween.SetEase(Tween.EaseType.In); - tween.TweenProperty(_mantlePath.PathFollow, "progress_ratio", 1, MantleTime*curveLength); + tween.TweenProperty(_mantlePath.PathFollow, "progress_ratio", 1, MantleTime); tween.Finished += MantleFinished; } public void HandleMantling(float delta) diff --git a/scenes/enemies/flying_enemy/flying_enemy.tscn b/scenes/enemies/flying_enemy/flying_enemy.tscn index 3e8ee93f..b32164b9 100644 --- a/scenes/enemies/flying_enemy/flying_enemy.tscn +++ b/scenes/enemies/flying_enemy/flying_enemy.tscn @@ -41,7 +41,6 @@ rings = 4 albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1) [sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"] -size = Vector3(1, 1, 1.5) [node name="FlyingEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CKnockback", "CMovement")] collision_layer = 16 @@ -107,5 +106,5 @@ collision_layer = 0 monitorable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="DamageBox"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.75) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.5) shape = SubResource("BoxShape3D_4yfjf") diff --git a/scenes/enemies/grounded_enemy/grounded_enemy.tscn b/scenes/enemies/grounded_enemy/grounded_enemy.tscn index 3331d7ec..e99b94ab 100644 --- a/scenes/enemies/grounded_enemy/grounded_enemy.tscn +++ b/scenes/enemies/grounded_enemy/grounded_enemy.tscn @@ -36,7 +36,7 @@ rings = 4 albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1) [sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"] -size = Vector3(1, 2, 2) +size = Vector3(1, 2, 1.5) [node name="GroundedEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CKnockback", "CMovement")] collision_layer = 16 @@ -103,5 +103,5 @@ collision_layer = 0 monitorable = false [node name="CollisionShape3D" type="CollisionShape3D" parent="DamageBox"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -0.5) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, -0.25) shape = SubResource("BoxShape3D_4yfjf") diff --git a/systems/head/HeadSystem.cs b/systems/head/HeadSystem.cs index 1f286901..b8635c3e 100644 --- a/systems/head/HeadSystem.cs +++ b/systems/head/HeadSystem.cs @@ -106,9 +106,16 @@ public partial class HeadSystem : Node3D public void OnMantle() { - _animationPlayer.Play("mantle"); + _animationTree.Set("parameters/OnMantle/request", (int) AnimationNodeOneShot.OneShotRequest.Fire); + } + public void OnJumpStarted() + { + _animationTree.Set("parameters/OnJumpStart/request", (int) AnimationNodeOneShot.OneShotRequest.Fire); + } + public void OnJumpEnded() + { + _animationTree.Set("parameters/OnJumpEnd/request", (int) AnimationNodeOneShot.OneShotRequest.Fire); } - public void OnHit() { _animationTree.Set("parameters/OnHit/request", (int) AnimationNodeOneShot.OneShotRequest.Fire); @@ -118,7 +125,6 @@ public partial class HeadSystem : Node3D { EmitSignalHitboxActivated(); } - public void OnHitboxDeactivated() { EmitSignalHitboxDeactivated(); diff --git a/systems/head/fp_blend_tree.tres b/systems/head/fp_blend_tree.tres index 1985c0b9..0d6b3768 100644 --- a/systems/head/fp_blend_tree.tres +++ b/systems/head/fp_blend_tree.tres @@ -1,4 +1,4 @@ -[gd_resource type="AnimationNodeBlendTree" load_steps=5 format=3 uid="uid://c26yvcyyyj811"] +[gd_resource type="AnimationNodeBlendTree" load_steps=11 format=3 uid="uid://c26yvcyyyj811"] [ext_resource type="AnimationNodeStateMachine" uid="uid://3r5oeg0ho0d4" path="res://systems/head/fp_state_machine.tres" id="1_knaxl"] @@ -7,18 +7,51 @@ animation = &"idle" [sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_1hkum"] +[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_knaxl"] +filter_enabled = true +filters = ["..:position", "..:rotation"] + +[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_23rmc"] +filter_enabled = true +filters = ["..:position", "..:rotation"] + +[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_dlkjl"] +filter_enabled = true +filters = ["..:position", "..:rotation", "..:rotation:x", "..:rotation:z"] + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_23rmc"] animation = &"hit1" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dlkjl"] +animation = &"jump_end" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ao3u1"] +animation = &"jump_start" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lwjon"] +animation = &"mantle" + [resource] -graph_offset = Vector2(-455.3856, -37.41575) -nodes/output/position = Vector2(320, 160) +graph_offset = Vector2(-223.13931, -84.56735) +nodes/output/position = Vector2(1540, 0) nodes/AnimationNodeStateMachine/node = ExtResource("1_knaxl") -nodes/AnimationNodeStateMachine/position = Vector2(-540, 200) +nodes/AnimationNodeStateMachine/position = Vector2(-560, 180) nodes/Idle/node = SubResource("AnimationNodeAnimation_knaxl") -nodes/Idle/position = Vector2(-80, 20) +nodes/Idle/position = Vector2(-100, -20) nodes/OnHit/node = SubResource("AnimationNodeOneShot_1hkum") -nodes/OnHit/position = Vector2(120, 100) +nodes/OnHit/position = Vector2(1240, -60) nodes/hit1/node = SubResource("AnimationNodeAnimation_23rmc") -nodes/hit1/position = Vector2(-80, 220) -node_connections = [&"output", 0, &"OnHit", &"OnHit", 0, &"Idle", &"OnHit", 1, &"hit1"] +nodes/hit1/position = Vector2(1080, 320) +nodes/OnJumpStart/node = SubResource("AnimationNodeOneShot_23rmc") +nodes/OnJumpStart/position = Vector2(140, 0) +nodes/OnJumpEnd/node = SubResource("AnimationNodeOneShot_knaxl") +nodes/OnJumpEnd/position = Vector2(560, -20) +nodes/jump_start/node = SubResource("AnimationNodeAnimation_ao3u1") +nodes/jump_start/position = Vector2(-120, 320) +nodes/jump_end/node = SubResource("AnimationNodeAnimation_dlkjl") +nodes/jump_end/position = Vector2(300, 340) +nodes/OnMantle/node = SubResource("AnimationNodeOneShot_dlkjl") +nodes/OnMantle/position = Vector2(900, -60) +nodes/mantle/node = SubResource("AnimationNodeAnimation_lwjon") +nodes/mantle/position = Vector2(640, 320) +node_connections = [&"output", 0, &"OnHit", &"OnHit", 0, &"OnMantle", &"OnHit", 1, &"hit1", &"OnJumpStart", 0, &"Idle", &"OnJumpStart", 1, &"jump_start", &"OnJumpEnd", 0, &"OnJumpStart", &"OnJumpEnd", 1, &"jump_end", &"OnMantle", 0, &"OnJumpEnd", &"OnMantle", 1, &"mantle"] diff --git a/systems/head/fp_state_machine.tres b/systems/head/fp_state_machine.tres index 34ee2636..843efaa0 100644 --- a/systems/head/fp_state_machine.tres +++ b/systems/head/fp_state_machine.tres @@ -1,7 +1,4 @@ -[gd_resource type="AnimationNodeStateMachine" load_steps=6 format=3 uid="uid://3r5oeg0ho0d4"] - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_adm0b"] -animation = &"hit1" +[gd_resource type="AnimationNodeStateMachine" load_steps=3 format=3 uid="uid://3r5oeg0ho0d4"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_73q32"] animation = &"idle" @@ -9,20 +6,9 @@ animation = &"idle" [sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_adm0b"] advance_mode = 2 -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_7r4t3"] -advance_mode = 2 -advance_condition = &"on_hit" - -[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2u8w7"] -break_loop_at_end = true -switch_mode = 2 -advance_mode = 2 - [resource] states/Start/position = Vector2(100, 91) -states/hit1/node = SubResource("AnimationNodeAnimation_adm0b") -states/hit1/position = Vector2(511, 61) states/idle/node = SubResource("AnimationNodeAnimation_73q32") states/idle/position = Vector2(331, 91) -transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_adm0b"), "idle", "hit1", SubResource("AnimationNodeStateMachineTransition_7r4t3"), "hit1", "idle", SubResource("AnimationNodeStateMachineTransition_2u8w7")] +transitions = ["Start", "idle", SubResource("AnimationNodeStateMachineTransition_adm0b")] graph_offset = Vector2(-82, -9) diff --git a/systems/head/head_system.tscn b/systems/head/head_system.tscn index f2b348e2..646112e1 100644 --- a/systems/head/head_system.tscn +++ b/systems/head/head_system.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=3 uid="uid://0ysqmqphq6mq"] +[gd_scene load_steps=11 format=3 uid="uid://0ysqmqphq6mq"] [ext_resource type="Script" uid="uid://dtkdrnsmlwm67" path="res://systems/head/HeadSystem.cs" id="1_8abgy"] [ext_resource type="ArrayMesh" uid="uid://ckr26s4e3fj1m" path="res://assets/swords/resources/fp_sword23.tres" id="2_c5qep"] @@ -6,130 +6,65 @@ [sub_resource type="Animation" id="Animation_urko7"] length = 0.001 -tracks/0/type = "bezier" +tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("..:rotation:x") +tracks/0/path = NodePath("../../FPRig/Sword:position") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0), -"times": PackedFloat32Array(0) +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.53640664, -0.7880347, -1.9288678)] } -tracks/1/type = "bezier" +tracks/1/type = "value" tracks/1/imported = false tracks/1/enabled = true -tracks/1/path = NodePath("..:rotation:z") +tracks/1/path = NodePath("../../FPRig/Sword:rotation") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0), -"times": PackedFloat32Array(0) +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(-0.083978735, -1.136043, 0.19867715)] } tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("../../FPRig/Sword:position") +tracks/2/path = NodePath("../../FPRig/Sword:scale") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector3(0.53640664, -0.7880347, -1.9288678)] +"values": [Vector3(1.0000001, 1.0000001, 1.0000005)] } tracks/3/type = "value" tracks/3/imported = false tracks/3/enabled = true -tracks/3/path = NodePath("../../FPRig/Sword:rotation") +tracks/3/path = NodePath("..:rotation") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector3(-0.083978735, -1.136043, 0.19867715)] +"values": [Vector3(0, 0, 0.00011616433)] } tracks/4/type = "value" tracks/4/imported = false tracks/4/enabled = true -tracks/4/path = NodePath("../../FPRig/Sword:scale") +tracks/4/path = NodePath("..:position") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector3(1.0000001, 1.0000001, 1.0000005)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("..:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0.00011616433)] -} - -[sub_resource type="Animation" id="Animation_8abgy"] -resource_name = "mantle" -length = 0.3 -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("..:rotation:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(2, 2, 2), -"points": PackedFloat32Array(0, 0, 0, 0.050000004, 0, -0.17453292, -0.050000004, 0, 0.050000004, 0, 0, -0.050000004, 0, 0, 0), -"times": PackedFloat32Array(0, 0.15, 0.3) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("..:rotation:z") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(2, 2, 2, 2), -"points": PackedFloat32Array(0.00011616433, 0, 0, 0.033333335, 0, -0.05235988, -0.033333335, 0, 0.033333335, 0, 0.05235988, -0.033333335, 0, 0.03333334, 0, 0, -0.03333334, 0, 0, 0), -"times": PackedFloat32Array(0, 0.1, 0.2, 0.3) -} - -[sub_resource type="Animation" id="Animation_0hyrq"] -resource_name = "idle" -length = 2.0 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("../../FPRig/Sword:position") -tracks/0/interp = 2 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [Vector3(0.53640664, -0.7880347, -1.9288678), Vector3(0.53640664, -0.83580256, -1.9288678), Vector3(0.53640664, -0.86088884, -1.9288678), Vector3(0.53640664, -0.8256072, -1.9288678), Vector3(0.53640664, -0.7880347, -1.9288678)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("../../FPRig/Sword:rotation") -tracks/1/interp = 2 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4), -"transitions": PackedFloat32Array(1, 1, 1, 1, 1), -"update": 0, -"values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(-0.06987281, -1.1365474, 0.20524277), Vector3(-0.05990464, -1.1368362, 0.20987195), Vector3(-0.06303402, -1.1367121, 0.2084137), Vector3(-0.083978735, -1.136043, 0.19867715)] +"values": [Vector3(0, 0, 0)] } [sub_resource type="Animation" id="Animation_r0h40"] @@ -202,11 +137,114 @@ tracks/4/keys = { }] } +[sub_resource type="Animation" id="Animation_0hyrq"] +resource_name = "idle" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("../../FPRig/Sword:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector3(0.53640664, -0.7880347, -1.9288678), Vector3(0.53640664, -0.83580256, -1.9288678), Vector3(0.53640664, -0.86088884, -1.9288678), Vector3(0.53640664, -0.8256072, -1.9288678), Vector3(0.53640664, -0.7880347, -1.9288678)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("../../FPRig/Sword:rotation") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.3, 0.6, 1, 1.4), +"transitions": PackedFloat32Array(1, 1, 1, 1, 1), +"update": 0, +"values": [Vector3(-0.083978735, -1.136043, 0.19867715), Vector3(-0.06987281, -1.1365474, 0.20524277), Vector3(-0.05990464, -1.1368362, 0.20987195), Vector3(-0.06303402, -1.1367121, 0.2084137), Vector3(-0.083978735, -1.136043, 0.19867715)] +} + +[sub_resource type="Animation" id="Animation_1ay6d"] +resource_name = "jump_end" +length = 0.26667002 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("..:rotation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.13333334, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0.00011616433), Vector3(-0.08726646, 0, 0), Vector3(0, 0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("..:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, -0.05, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_ubhf8"] +resource_name = "jump_start" +length = 0.26667002 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("..:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("..:rotation") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.13333334, 0.26666668), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0.00011616433), Vector3(-0.08726646, 0, 0), Vector3(0, 0, 0)] +} + +[sub_resource type="Animation" id="Animation_8abgy"] +resource_name = "mantle" +length = 0.3 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("..:rotation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.1, 0.3), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0.00011616433), Vector3(-1.0471976, 0, 0), Vector3(0, 0, 0)] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_0hyrq"] _data = { &"RESET": SubResource("Animation_urko7"), &"hit1": SubResource("Animation_r0h40"), &"idle": SubResource("Animation_0hyrq"), +&"jump_end": SubResource("Animation_1ay6d"), +&"jump_start": SubResource("Animation_ubhf8"), &"mantle": SubResource("Animation_8abgy") } @@ -227,7 +265,7 @@ cast_shadow = 0 mesh = ExtResource("2_c5qep") [node name="CameraSmooth" type="Node3D" parent="."] -transform = Transform3D(1, -0.00011616433, 0, 0.00011616433, 1, 0, 0, 0, 1, 0, 0, 0) +transform = Transform3D(1, -0.00011616431, 0, 0.00011616433, 0.9999998, 0, 0, 0, 0.9999998, 0, 0, 0) [node name="Camera3D" type="Camera3D" parent="CameraSmooth"] transform = Transform3D(1, 0, 0, 0, 0.99999994, 0, 0, 0, 0.99999994, 0, 0, 0) @@ -246,7 +284,15 @@ libraries = { root_node = NodePath("../CameraSmooth/Camera3D") tree_root = ExtResource("3_r0h40") anim_player = NodePath("../AnimationPlayer") -parameters/AnimationNodeStateMachine/conditions/on_hit = false parameters/OnHit/active = false parameters/OnHit/internal_active = false parameters/OnHit/request = 0 +parameters/OnJumpStart/active = false +parameters/OnJumpStart/internal_active = false +parameters/OnJumpStart/request = 0 +parameters/OnJumpEnd/active = false +parameters/OnJumpEnd/internal_active = false +parameters/OnJumpEnd/request = 0 +parameters/OnMantle/active = false +parameters/OnMantle/internal_active = false +parameters/OnMantle/request = 0