From 8299648c9885b27d2f0e5ea9a62ef22c12543ab4 Mon Sep 17 00:00:00 2001 From: Haze Weathers Date: Sat, 25 Nov 2023 19:02:35 -0500 Subject: [PATCH] allow switching sides of ladder (implements #212) --- objects/environment/ladder/ladder.gd | 3 +++ objects/player/player.gd | 9 ++++++++- objects/player/player.tscn | 12 ++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/objects/environment/ladder/ladder.gd b/objects/environment/ladder/ladder.gd index 7cfe490..759101e 100644 --- a/objects/environment/ladder/ladder.gd +++ b/objects/environment/ladder/ladder.gd @@ -1,5 +1,8 @@ extends Area2D +export var can_climb_left: bool = true +export var can_climb_right: bool = true + onready var left_snap: float = $LeftSnap.global_position.x onready var right_snap: float = $RightSnap.global_position.x onready var middle: float = global_position.x + 4.0 diff --git a/objects/player/player.gd b/objects/player/player.gd index 3fb1ca7..59ee211 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -267,10 +267,11 @@ func _on_Climbing_state_entered() -> void: if ladder_dir >= 0.0 != flip: global_position.x = _attached_ladder.left_snap graphics.scale.x = 1.0 + animation_player.play("climb") else: global_position.x = _attached_ladder.right_snap graphics.scale.x = -1.0 - animation_player.play("climb") + animation_player.play("climb") func _on_Climbing_state_exited() -> void: _attached_ladder = null @@ -453,6 +454,12 @@ func _process_climbing(delta: float) -> void: # if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: # global_position.x -= graphics.scale.x * 3.0 # state_chart.send_event("ladder_detach")# + elif Input.is_action_just_pressed("move_left") and _attached_ladder.can_climb_left: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + elif Input.is_action_just_pressed("move_right") and _attached_ladder.can_climb_right: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 else: var ladder_dir = sign(_attached_ladder.middle - global_position.x) if ladder_dir >= 0.0: diff --git a/objects/player/player.tscn b/objects/player/player.tscn index fa3ec55..80c9f3a 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -815,6 +815,18 @@ tracks/2/keys = { "update": 1, "values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} [sub_resource type="Animation" id=11] resource_name = "shoot_airborne"