roll animation

pull/3/head
HumanoidSandvichDispenser 2023-06-11 15:15:52 -07:00
parent e586ae0e6d
commit 19b8bf362d
Signed by: sandvich
GPG Key ID: 9A39BE37E602B22D
2 changed files with 65 additions and 2 deletions

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=30 format=3 uid="uid://b2254pup8k161"] [gd_scene load_steps=33 format=3 uid="uid://b2254pup8k161"]
[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"] [ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"] [ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
@ -134,6 +134,44 @@ _data = {
"RESET": SubResource("Animation_k6l16") "RESET": SubResource("Animation_k6l16")
} }
[sub_resource type="Animation" id="Animation_rx2pj"]
resource_name = "roll"
length = 0.5
step = 0.05
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.25, 0.5),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [0.0, 3.14159, 6.28319]
}
[sub_resource type="Animation" id="Animation_yejx2"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Sprite:rotation")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [0.0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_jai06"]
_data = {
"RESET": SubResource("Animation_yejx2"),
"roll": SubResource("Animation_rx2pj")
}
[node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("Camera", "DirectionMarker", "Sprite", "Inventory", "StateMachine", "Hurtbox")] [node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("Camera", "DirectionMarker", "Sprite", "Inventory", "StateMachine", "Hurtbox")]
y_sort_enabled = true y_sort_enabled = true
texture_filter = 3 texture_filter = 3
@ -178,8 +216,10 @@ position_smoothing_speed = 8.0
[node name="Sprite" type="AnimatedSprite2D" parent="."] [node name="Sprite" type="AnimatedSprite2D" parent="."]
use_parent_material = true use_parent_material = true
position = Vector2(0, 4)
sprite_frames = SubResource("SpriteFrames_2h7cf") sprite_frames = SubResource("SpriteFrames_2h7cf")
animation = &"idle" animation = &"idle"
offset = Vector2(0, -4)
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, 8) position = Vector2(0, 8)
@ -202,10 +242,11 @@ horizontal_alignment = 1
[node name="Node" type="Node" parent="."] [node name="Node" type="Node" parent="."]
[node name="Inventory" type="Node2D" parent="."] [node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Items")]
y_sort_enabled = true y_sort_enabled = true
position = Vector2(0, 4) position = Vector2(0, 4)
script = ExtResource("7_xyenu") script = ExtResource("7_xyenu")
Items = []
InventoryMap = { InventoryMap = {
"equip_1": 0, "equip_1": 0,
"equip_2": 1 "equip_2": 1
@ -227,6 +268,11 @@ libraries = {
"": SubResource("AnimationLibrary_xe5eq") "": SubResource("AnimationLibrary_xe5eq")
} }
[node name="RollAnimation" type="AnimationPlayer" parent="."]
libraries = {
"": SubResource("AnimationLibrary_jai06")
}
[node name="HurtSound" type="AudioStreamPlayer2D" parent="."] [node name="HurtSound" type="AudioStreamPlayer2D" parent="."]
stream = ExtResource("12_h0x0g") stream = ExtResource("12_h0x0g")
max_distance = 64.0 max_distance = 64.0

View File

@ -8,12 +8,28 @@ public partial class PlayerRollState : PlayerState
private Vector2 _rollDirection = Vector2.Zero; private Vector2 _rollDirection = Vector2.Zero;
private AnimationPlayer _rollAnimation;
public override void _Ready()
{
_rollAnimation = _player.GetNode<AnimationPlayer>("RollAnimation");
base._Ready();
}
public override IState<CharacterState> Enter(IState<CharacterState> previousState) public override IState<CharacterState> Enter(IState<CharacterState> previousState)
{ {
_timeLeftToRoll = 0.5; _timeLeftToRoll = 0.5;
// roll the direction we were previously moving in // roll the direction we were previously moving in
_rollDirection = Character.Direction; _rollDirection = Character.Direction;
Character.Target = Character.Direction; Character.Target = Character.Direction;
if (Character.Direction.X >= 0)
{
_rollAnimation.Play("roll");
}
else
{
_rollAnimation.PlayBackwards("roll");
}
return base.Enter(previousState); return base.Enter(previousState);
} }
@ -23,6 +39,7 @@ public partial class PlayerRollState : PlayerState
// this state (e.g. from death) // this state (e.g. from death)
_timeLeftToRoll = 0; _timeLeftToRoll = 0;
_rollDirection = Character.Direction; _rollDirection = Character.Direction;
_rollAnimation.Stop();
base.Exit(nextState); base.Exit(nextState);
} }