Turning animations with blend spaces
This commit is contained in:
parent
2a92de18c7
commit
50c349c236
@ -134,9 +134,9 @@ animation = "wallslideToJumpRight"
|
||||
|
||||
[sub_resource type="AnimationNodeBlendSpace1D" id=136]
|
||||
blend_point_0/node = SubResource( 134 )
|
||||
blend_point_0/pos = -1.0
|
||||
blend_point_0/pos = 1.0
|
||||
blend_point_1/node = SubResource( 135 )
|
||||
blend_point_1/pos = 1.0
|
||||
blend_point_1/pos = -1.0
|
||||
|
||||
[sub_resource type="AnimationNodeAnimation" id=179]
|
||||
animation = "wallsliding"
|
||||
@ -151,8 +151,6 @@ blend_point_1/node = SubResource( 180 )
|
||||
blend_point_1/pos = 1.0
|
||||
snap = 1.0
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=137]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=138]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=139]
|
||||
@ -215,8 +213,10 @@ priority = 2
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=166]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=167]
|
||||
xfade_time = 0.1
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=168]
|
||||
xfade_time = 0.1
|
||||
priority = 2
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=169]
|
||||
@ -240,6 +240,7 @@ switch_mode = 2
|
||||
auto_advance = true
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=176]
|
||||
xfade_time = 0.5
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=177]
|
||||
switch_mode = 2
|
||||
@ -247,6 +248,8 @@ auto_advance = true
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=178]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachineTransition" id=137]
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachine" id=47]
|
||||
states/duckTurn/node = SubResource( 126 )
|
||||
states/duckTurn/position = Vector2( 1795.54, 241 )
|
||||
@ -271,12 +274,12 @@ states/turnToRun/position = Vector2( 1795.54, -308.991 )
|
||||
states/walking/node = SubResource( 133 )
|
||||
states/walking/position = Vector2( 1795.54, -54 )
|
||||
states/wallslideToJump/node = SubResource( 136 )
|
||||
states/wallslideToJump/position = Vector2( 1375.54, 296.009 )
|
||||
states/wallslideToJump/position = Vector2( 1568.54, 459.009 )
|
||||
states/wallsliding/node = SubResource( 96 )
|
||||
states/wallsliding/position = Vector2( 1803.54, 563.009 )
|
||||
transitions = [ "wallsliding", "falling", SubResource( 137 ), "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "running", "turnToRun", SubResource( 171 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ) ]
|
||||
states/wallsliding/position = Vector2( 1766.54, 606.009 )
|
||||
transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "running", "turnToRun", SubResource( 171 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ) ]
|
||||
start_node = "idling"
|
||||
graph_offset = Vector2( 1001.54, 39.009 )
|
||||
graph_offset = Vector2( 921.542, -100.991 )
|
||||
|
||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
|
||||
|
||||
@ -1658,7 +1661,7 @@ tracks/10/keys = {
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=71]
|
||||
length = 0.1
|
||||
length = 0.13
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:frame")
|
||||
@ -1795,7 +1798,7 @@ tracks/10/keys = {
|
||||
|
||||
[sub_resource type="Animation" id=105]
|
||||
resource_name = "jumpToFallLeft"
|
||||
length = 0.1
|
||||
length = 0.13
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:frame")
|
||||
@ -2204,7 +2207,7 @@ tracks/10/keys = {
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id=72]
|
||||
length = 0.3
|
||||
length = 0.23
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:frame")
|
||||
@ -2213,10 +2216,10 @@ tracks/0/loop_wrap = false
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 0.15 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ 27.0, 28 ]
|
||||
"values": [ 27.0 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
|
||||
@ -2341,7 +2344,7 @@ tracks/10/keys = {
|
||||
|
||||
[sub_resource type="Animation" id=143]
|
||||
resource_name = "runToJumpLeft"
|
||||
length = 0.3
|
||||
length = 0.23
|
||||
loop = true
|
||||
tracks/0/type = "value"
|
||||
tracks/0/path = NodePath(".:frame")
|
||||
@ -2350,10 +2353,10 @@ tracks/0/loop_wrap = false
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"times": PoolRealArray( 0, 0.15 ),
|
||||
"transitions": PoolRealArray( 1, 1 ),
|
||||
"times": PoolRealArray( 0 ),
|
||||
"transitions": PoolRealArray( 1 ),
|
||||
"update": 1,
|
||||
"values": [ 27, 28 ]
|
||||
"values": [ 27 ]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
|
||||
@ -3883,7 +3886,7 @@ parameters/runToJump/blend_position = 1.0
|
||||
parameters/running/blend_position = 1.0
|
||||
parameters/turnToRun/blend_position = 1.0
|
||||
parameters/walking/blend_position = 1.0
|
||||
parameters/wallslideToJump/blend_position = 1.0
|
||||
parameters/wallslideToJump/blend_position = 0.997743
|
||||
parameters/wallsliding/blend_position = 1.0
|
||||
|
||||
[node name="BlobbymationPlayer" type="AnimationPlayer" parent="BlobbySprite"]
|
||||
|
||||
@ -12,7 +12,8 @@ onready var anim_state_playback = parent.get_node("BlobbySprite/AnimationTree").
|
||||
onready var anim_tree = parent.get_node("BlobbySprite/AnimationTree")
|
||||
onready var sprite = parent.get_node("BlobbySprite")
|
||||
|
||||
var didTurn: bool
|
||||
var facing = 1
|
||||
var didTurn
|
||||
|
||||
# Adds the intial states
|
||||
func _ready():
|
||||
@ -59,15 +60,19 @@ func _state_logic(delta):
|
||||
print("don't panik")
|
||||
|
||||
var direction = get_horizontal_direction()
|
||||
didTurn = false
|
||||
|
||||
|
||||
if direction.x < 0 && facing == 1:
|
||||
didTurn = true
|
||||
facing = sign(direction.x)
|
||||
elif direction.x > 0 && facing == -1:
|
||||
didTurn = true
|
||||
facing = sign(direction.x)
|
||||
|
||||
didTurn = sprite.flip_h
|
||||
if direction.x < 0:
|
||||
anim_state_playback
|
||||
elif direction.x > 0:
|
||||
sprite.flip_h = false
|
||||
didTurn = sprite.flip_h != didTurn
|
||||
|
||||
if didTurn:
|
||||
_set_blendspaces_direction(facing)
|
||||
_trigger_turn_animation()
|
||||
|
||||
parent.velocity = handle_input_ref.call_func(delta, direction)
|
||||
@ -185,6 +190,7 @@ func _enter_state(new_state, old_state):
|
||||
|
||||
match new_state:
|
||||
states.walk:
|
||||
# TODO I need this when there is a turn happening between two different states
|
||||
if old_state == states.idle && didTurn:
|
||||
anim_state_playback.travel("idleTurn")
|
||||
else:
|
||||
@ -208,6 +214,19 @@ func _enter_state(new_state, old_state):
|
||||
func _exit_state(old_state, new_state):
|
||||
pass
|
||||
|
||||
func _set_blendspaces_direction(value):
|
||||
anim_tree.set("parameters/ducking/blend_position", value)
|
||||
anim_tree.set("parameters/falling/blend_position", value)
|
||||
anim_tree.set("parameters/idling/blend_position", value)
|
||||
anim_tree.set("parameters/jumpToFall/blend_position", value)
|
||||
anim_tree.set("parameters/jumping/blend_position", value)
|
||||
anim_tree.set("parameters/runToJump/blend_position", value)
|
||||
anim_tree.set("parameters/running/blend_position", value)
|
||||
anim_tree.set("parameters/turnToRun/blend_position", value)
|
||||
anim_tree.set("parameters/walking/blend_position", value)
|
||||
anim_tree.set("parameters/wallslideToJump/blend_position", value)
|
||||
anim_tree.set("parameters/wallsliding/blend_position", value)
|
||||
|
||||
func _trigger_turn_animation():
|
||||
match self.state:
|
||||
states.duck:
|
||||
@ -216,4 +235,4 @@ func _trigger_turn_animation():
|
||||
anim_state_playback.travel("idleTurn")
|
||||
states.idle:
|
||||
anim_state_playback.travel("idleTurn")
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user