forked from team-sg/hero-mark-2
implement drowning
This commit is contained in:
parent
4958c420d8
commit
325f2a6dd3
2 changed files with 63 additions and 11 deletions
|
@ -260,6 +260,10 @@ func _on_Dead_state_entered() -> void:
|
||||||
#refill oxygen
|
#refill oxygen
|
||||||
oxygen_timer.start()
|
oxygen_timer.start()
|
||||||
|
|
||||||
|
func _on_Drowning_state_entered() -> void:
|
||||||
|
state_chart.send_event("died")
|
||||||
|
animation_player.play("drown")
|
||||||
|
|
||||||
func _on_Respawn_state_entered() -> void:
|
func _on_Respawn_state_entered() -> void:
|
||||||
global_position = Game.respawn_point
|
global_position = Game.respawn_point
|
||||||
graphics.visible = true
|
graphics.visible = true
|
||||||
|
@ -394,6 +398,15 @@ func _process_movement(delta: float) -> void:
|
||||||
if is_on_wall():
|
if is_on_wall():
|
||||||
state_chart.send_event("push_start")
|
state_chart.send_event("push_start")
|
||||||
|
|
||||||
|
func _process_floating_up(delta: float) -> void:
|
||||||
|
graphics.global_position.y -= 50.0 * delta
|
||||||
|
var sprite_sector = Game.get_sector(Vector2(global_position.x, graphics.global_position.y))
|
||||||
|
if sprite_sector != Game.current_sector:
|
||||||
|
graphics.visible = false
|
||||||
|
graphics.position = Vector2.ZERO
|
||||||
|
emit_signal("died")
|
||||||
|
state_chart.send_event("respawn")
|
||||||
|
|
||||||
|
|
||||||
# COLLISION CALLBACKS #
|
# COLLISION CALLBACKS #
|
||||||
func _on_Hitbox_body_entered(body: Node) -> void:
|
func _on_Hitbox_body_entered(body: Node) -> void:
|
||||||
|
@ -407,10 +420,9 @@ func _on_Ducking_event_received(event):
|
||||||
|
|
||||||
|
|
||||||
func _on_OxygenTimer_timeout():
|
func _on_OxygenTimer_timeout():
|
||||||
if underwater: die()
|
if underwater:
|
||||||
|
state_chart.send_event("drown")
|
||||||
|
|
||||||
#Reset low oxygen effect when leaving level
|
#Reset low oxygen effect when leaving level
|
||||||
func _on_Player_tree_exited():
|
func _on_Player_tree_exited():
|
||||||
set_underwater_audio(false)
|
set_underwater_audio(false)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,18 @@ tracks/3/keys = {
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [ 0.0 ]
|
"values": [ 0.0 ]
|
||||||
}
|
}
|
||||||
|
tracks/4/type = "value"
|
||||||
|
tracks/4/path = NodePath("Graphics/Sprite:position")
|
||||||
|
tracks/4/interp = 1
|
||||||
|
tracks/4/loop_wrap = true
|
||||||
|
tracks/4/imported = false
|
||||||
|
tracks/4/enabled = true
|
||||||
|
tracks/4/keys = {
|
||||||
|
"times": PoolRealArray( 0 ),
|
||||||
|
"transitions": PoolRealArray( 1 ),
|
||||||
|
"update": 0,
|
||||||
|
"values": [ Vector2( 0, -10 ) ]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id=18]
|
[sub_resource type="Animation" id=18]
|
||||||
resource_name = "blink"
|
resource_name = "blink"
|
||||||
|
@ -281,7 +293,7 @@ tracks/1/loop_wrap = true
|
||||||
tracks/1/imported = false
|
tracks/1/imported = false
|
||||||
tracks/1/enabled = true
|
tracks/1/enabled = true
|
||||||
tracks/1/keys = {
|
tracks/1/keys = {
|
||||||
"times": PoolRealArray( 0, 0.05, 0.1, 0.75, 0.8, 0.85, 1.05, 1.11114 ),
|
"times": PoolRealArray( 0, 0.05, 0.1, 0.8, 0.85, 0.9, 1.1, 1.15 ),
|
||||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ]
|
"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ]
|
||||||
|
@ -293,10 +305,10 @@ tracks/2/loop_wrap = true
|
||||||
tracks/2/imported = false
|
tracks/2/imported = false
|
||||||
tracks/2/enabled = true
|
tracks/2/enabled = true
|
||||||
tracks/2/keys = {
|
tracks/2/keys = {
|
||||||
"times": PoolRealArray( 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75, 1.15 ),
|
"times": PoolRealArray( 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.2 ),
|
||||||
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
|
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [ Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 2, -10 ), Vector2( 2, -10 ) ]
|
"values": [ Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ]
|
||||||
}
|
}
|
||||||
tracks/3/type = "value"
|
tracks/3/type = "value"
|
||||||
tracks/3/path = NodePath("Graphics/Sprite:texture")
|
tracks/3/path = NodePath("Graphics/Sprite:texture")
|
||||||
|
@ -311,17 +323,17 @@ tracks/3/keys = {
|
||||||
"values": [ ExtResource( 28 ) ]
|
"values": [ ExtResource( 28 ) ]
|
||||||
}
|
}
|
||||||
tracks/4/type = "method"
|
tracks/4/type = "method"
|
||||||
tracks/4/path = NodePath(".")
|
tracks/4/path = NodePath("StateChart")
|
||||||
tracks/4/interp = 1
|
tracks/4/interp = 1
|
||||||
tracks/4/loop_wrap = true
|
tracks/4/loop_wrap = true
|
||||||
tracks/4/imported = false
|
tracks/4/imported = false
|
||||||
tracks/4/enabled = true
|
tracks/4/enabled = true
|
||||||
tracks/4/keys = {
|
tracks/4/keys = {
|
||||||
"times": PoolRealArray( 1.15 ),
|
"times": PoolRealArray( 1.3 ),
|
||||||
"transitions": PoolRealArray( 1 ),
|
"transitions": PoolRealArray( 1 ),
|
||||||
"values": [ {
|
"values": [ {
|
||||||
"args": [ ],
|
"args": [ "float_up" ],
|
||||||
"method": "float_to_top"
|
"method": "send_event"
|
||||||
} ]
|
} ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1001,7 +1013,7 @@ double_jump_force = 124.0
|
||||||
[node name="Sprite" type="Sprite" parent="Graphics"]
|
[node name="Sprite" type="Sprite" parent="Graphics"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
material = SubResource( 1 )
|
material = SubResource( 1 )
|
||||||
position = Vector2( 1, -10 )
|
position = Vector2( 0, -10 )
|
||||||
texture = ExtResource( 4 )
|
texture = ExtResource( 4 )
|
||||||
|
|
||||||
[node name="ArrowPosition" type="Position2D" parent="Graphics"]
|
[node name="ArrowPosition" type="Position2D" parent="Graphics"]
|
||||||
|
@ -1412,6 +1424,11 @@ script = ExtResource( 10 )
|
||||||
to = NodePath("../../Dead")
|
to = NodePath("../../Dead")
|
||||||
event = "hurt"
|
event = "hurt"
|
||||||
|
|
||||||
|
[node name="On Drown" type="Node" parent="StateChart/Root/Health/Vulnerable"]
|
||||||
|
script = ExtResource( 10 )
|
||||||
|
to = NodePath("../../Drowning")
|
||||||
|
event = "drown"
|
||||||
|
|
||||||
[node name="On BecomeInvulnerable" type="Node" parent="StateChart/Root/Health/Vulnerable"]
|
[node name="On BecomeInvulnerable" type="Node" parent="StateChart/Root/Health/Vulnerable"]
|
||||||
script = ExtResource( 10 )
|
script = ExtResource( 10 )
|
||||||
to = NodePath("../../Invulnerable")
|
to = NodePath("../../Invulnerable")
|
||||||
|
@ -1443,6 +1460,27 @@ to = NodePath("../../Respawn")
|
||||||
event = "respawn"
|
event = "respawn"
|
||||||
guard_expression = "can_respawn"
|
guard_expression = "can_respawn"
|
||||||
|
|
||||||
|
[node name="Drowning" type="Node" parent="StateChart/Root/Health"]
|
||||||
|
script = ExtResource( 9 )
|
||||||
|
initial_state = NodePath("DrownStart")
|
||||||
|
|
||||||
|
[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Drowning"]
|
||||||
|
script = ExtResource( 10 )
|
||||||
|
to = NodePath("../../Respawn")
|
||||||
|
event = "respawn"
|
||||||
|
guard_expression = "can_respawn"
|
||||||
|
|
||||||
|
[node name="DrownStart" type="Node" parent="StateChart/Root/Health/Drowning"]
|
||||||
|
script = ExtResource( 11 )
|
||||||
|
|
||||||
|
[node name="On FloatUp" type="Node" parent="StateChart/Root/Health/Drowning/DrownStart"]
|
||||||
|
script = ExtResource( 10 )
|
||||||
|
to = NodePath("../../FloatingUp")
|
||||||
|
event = "float_up"
|
||||||
|
|
||||||
|
[node name="FloatingUp" type="Node" parent="StateChart/Root/Health/Drowning"]
|
||||||
|
script = ExtResource( 11 )
|
||||||
|
|
||||||
[node name="StateDebugLayer" type="CanvasLayer" parent="."]
|
[node name="StateDebugLayer" type="CanvasLayer" parent="."]
|
||||||
layer = 128
|
layer = 128
|
||||||
|
|
||||||
|
@ -1509,4 +1547,6 @@ align = 1
|
||||||
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"]
|
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"]
|
||||||
[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"]
|
[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"]
|
||||||
[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"]
|
[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"]
|
||||||
|
[connection signal="state_entered" from="StateChart/Root/Health/Drowning" to="." method="_on_Drowning_state_entered"]
|
||||||
|
[connection signal="state_physics_processing" from="StateChart/Root/Health/Drowning/FloatingUp" to="." method="_process_floating_up"]
|
||||||
[connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"]
|
[connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue