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]
|
[sub_resource type="AnimationNodeBlendSpace1D" id=136]
|
||||||
blend_point_0/node = SubResource( 134 )
|
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/node = SubResource( 135 )
|
||||||
blend_point_1/pos = 1.0
|
blend_point_1/pos = -1.0
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeAnimation" id=179]
|
[sub_resource type="AnimationNodeAnimation" id=179]
|
||||||
animation = "wallsliding"
|
animation = "wallsliding"
|
||||||
@ -151,8 +151,6 @@ blend_point_1/node = SubResource( 180 )
|
|||||||
blend_point_1/pos = 1.0
|
blend_point_1/pos = 1.0
|
||||||
snap = 1.0
|
snap = 1.0
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=137]
|
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=138]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=138]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=139]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=139]
|
||||||
@ -215,8 +213,10 @@ priority = 2
|
|||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=166]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=166]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=167]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=167]
|
||||||
|
xfade_time = 0.1
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=168]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=168]
|
||||||
|
xfade_time = 0.1
|
||||||
priority = 2
|
priority = 2
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=169]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=169]
|
||||||
@ -240,6 +240,7 @@ switch_mode = 2
|
|||||||
auto_advance = true
|
auto_advance = true
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=176]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=176]
|
||||||
|
xfade_time = 0.5
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=177]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=177]
|
||||||
switch_mode = 2
|
switch_mode = 2
|
||||||
@ -247,6 +248,8 @@ auto_advance = true
|
|||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=178]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=178]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=137]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachine" id=47]
|
[sub_resource type="AnimationNodeStateMachine" id=47]
|
||||||
states/duckTurn/node = SubResource( 126 )
|
states/duckTurn/node = SubResource( 126 )
|
||||||
states/duckTurn/position = Vector2( 1795.54, 241 )
|
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/node = SubResource( 133 )
|
||||||
states/walking/position = Vector2( 1795.54, -54 )
|
states/walking/position = Vector2( 1795.54, -54 )
|
||||||
states/wallslideToJump/node = SubResource( 136 )
|
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/node = SubResource( 96 )
|
||||||
states/wallsliding/position = Vector2( 1803.54, 563.009 )
|
states/wallsliding/position = Vector2( 1766.54, 606.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 ) ]
|
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"
|
start_node = "idling"
|
||||||
graph_offset = Vector2( 1001.54, 39.009 )
|
graph_offset = Vector2( 921.542, -100.991 )
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
|
||||||
|
|
||||||
@ -1658,7 +1661,7 @@ tracks/10/keys = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id=71]
|
[sub_resource type="Animation" id=71]
|
||||||
length = 0.1
|
length = 0.13
|
||||||
loop = true
|
loop = true
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/path = NodePath(".:frame")
|
tracks/0/path = NodePath(".:frame")
|
||||||
@ -1795,7 +1798,7 @@ tracks/10/keys = {
|
|||||||
|
|
||||||
[sub_resource type="Animation" id=105]
|
[sub_resource type="Animation" id=105]
|
||||||
resource_name = "jumpToFallLeft"
|
resource_name = "jumpToFallLeft"
|
||||||
length = 0.1
|
length = 0.13
|
||||||
loop = true
|
loop = true
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/path = NodePath(".:frame")
|
tracks/0/path = NodePath(".:frame")
|
||||||
@ -2204,7 +2207,7 @@ tracks/10/keys = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id=72]
|
[sub_resource type="Animation" id=72]
|
||||||
length = 0.3
|
length = 0.23
|
||||||
loop = true
|
loop = true
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/path = NodePath(".:frame")
|
tracks/0/path = NodePath(".:frame")
|
||||||
@ -2213,10 +2216,10 @@ tracks/0/loop_wrap = false
|
|||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PoolRealArray( 0, 0.15 ),
|
"times": PoolRealArray( 0 ),
|
||||||
"transitions": PoolRealArray( 1, 1 ),
|
"transitions": PoolRealArray( 1 ),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 27.0, 28 ]
|
"values": [ 27.0 ]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
|
tracks/1/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
|
||||||
@ -2341,7 +2344,7 @@ tracks/10/keys = {
|
|||||||
|
|
||||||
[sub_resource type="Animation" id=143]
|
[sub_resource type="Animation" id=143]
|
||||||
resource_name = "runToJumpLeft"
|
resource_name = "runToJumpLeft"
|
||||||
length = 0.3
|
length = 0.23
|
||||||
loop = true
|
loop = true
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
tracks/0/path = NodePath(".:frame")
|
tracks/0/path = NodePath(".:frame")
|
||||||
@ -2350,10 +2353,10 @@ tracks/0/loop_wrap = false
|
|||||||
tracks/0/imported = false
|
tracks/0/imported = false
|
||||||
tracks/0/enabled = true
|
tracks/0/enabled = true
|
||||||
tracks/0/keys = {
|
tracks/0/keys = {
|
||||||
"times": PoolRealArray( 0, 0.15 ),
|
"times": PoolRealArray( 0 ),
|
||||||
"transitions": PoolRealArray( 1, 1 ),
|
"transitions": PoolRealArray( 1 ),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 27, 28 ]
|
"values": [ 27 ]
|
||||||
}
|
}
|
||||||
tracks/1/type = "value"
|
tracks/1/type = "value"
|
||||||
tracks/1/path = NodePath("../BlobbySkin/CollisionPolygon2D:shape:extents")
|
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/running/blend_position = 1.0
|
||||||
parameters/turnToRun/blend_position = 1.0
|
parameters/turnToRun/blend_position = 1.0
|
||||||
parameters/walking/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
|
parameters/wallsliding/blend_position = 1.0
|
||||||
|
|
||||||
[node name="BlobbymationPlayer" type="AnimationPlayer" parent="BlobbySprite"]
|
[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 anim_tree = parent.get_node("BlobbySprite/AnimationTree")
|
||||||
onready var sprite = parent.get_node("BlobbySprite")
|
onready var sprite = parent.get_node("BlobbySprite")
|
||||||
|
|
||||||
var didTurn: bool
|
var facing = 1
|
||||||
|
var didTurn
|
||||||
|
|
||||||
# Adds the intial states
|
# Adds the intial states
|
||||||
func _ready():
|
func _ready():
|
||||||
@ -59,15 +60,19 @@ func _state_logic(delta):
|
|||||||
print("don't panik")
|
print("don't panik")
|
||||||
|
|
||||||
var direction = get_horizontal_direction()
|
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:
|
if didTurn:
|
||||||
|
_set_blendspaces_direction(facing)
|
||||||
_trigger_turn_animation()
|
_trigger_turn_animation()
|
||||||
|
|
||||||
parent.velocity = handle_input_ref.call_func(delta, direction)
|
parent.velocity = handle_input_ref.call_func(delta, direction)
|
||||||
@ -185,6 +190,7 @@ func _enter_state(new_state, old_state):
|
|||||||
|
|
||||||
match new_state:
|
match new_state:
|
||||||
states.walk:
|
states.walk:
|
||||||
|
# TODO I need this when there is a turn happening between two different states
|
||||||
if old_state == states.idle && didTurn:
|
if old_state == states.idle && didTurn:
|
||||||
anim_state_playback.travel("idleTurn")
|
anim_state_playback.travel("idleTurn")
|
||||||
else:
|
else:
|
||||||
@ -208,6 +214,19 @@ func _enter_state(new_state, old_state):
|
|||||||
func _exit_state(old_state, new_state):
|
func _exit_state(old_state, new_state):
|
||||||
pass
|
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():
|
func _trigger_turn_animation():
|
||||||
match self.state:
|
match self.state:
|
||||||
states.duck:
|
states.duck:
|
||||||
@ -216,4 +235,4 @@ func _trigger_turn_animation():
|
|||||||
anim_state_playback.travel("idleTurn")
|
anim_state_playback.travel("idleTurn")
|
||||||
states.idle:
|
states.idle:
|
||||||
anim_state_playback.travel("idleTurn")
|
anim_state_playback.travel("idleTurn")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user