diff --git a/princesse.gd b/princesse.gd index 13f2df2..312fa33 100644 --- a/princesse.gd +++ b/princesse.gd @@ -5,7 +5,8 @@ extends CharacterBody2D @export var action_suffix := "" var gravity: int = ProjectSettings.get("physics/2d/default_gravity") -@onready var platform_detector := $PlatformDetector as RayCast2D +@onready var wall_detect_left := $wall_detect_left as RayCast2D +@onready var wall_detect_right := $wall_detect_right as RayCast2D @onready var animation := $AnimatedSprite2D as AnimatedSprite2D @onready var camera := $Camera2D as Camera2D var _double_jump_charged := false @@ -165,7 +166,7 @@ func end_jump(): jump_key_counter = 0 func _physics_process(delta: float) -> void: - pressing_wall = is_on_wall_only() + pressing_wall = wall_detect_left.is_colliding() or wall_detect_right.is_colliding() grab_wall = pressing_wall and Input.is_action_pressed("grab" + action_suffix) if Input.is_action_just_pressed("jump" + action_suffix): @@ -210,8 +211,11 @@ func _physics_process(delta: float) -> void: else: animation.scale.x = -1.0 - if grab_wall and not jumping: - animation.scale.x *= -1 + if grab_wall: + if wall_detect_left.is_colliding(): + animation.scale.x = 1 + elif wall_detect_right.is_colliding(): + animation.scale.x = -1 #floor_stop_on_slope = not platform_detector.is_colliding() var collision = move_and_slide() diff --git a/princesse.tscn b/princesse.tscn index 89f8c4a..450a686 100644 --- a/princesse.tscn +++ b/princesse.tscn @@ -208,11 +208,11 @@ WALK_INCR_AIR = 6 [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] sprite_frames = SubResource("SpriteFrames_q52wx") -animation = &"walk" -frame_progress = 0.153163 +animation = &"idle" -[node name="PlatformDetector" type="RayCast2D" parent="."] -collision_mask = 8 +[node name="wall_detect_left" type="RayCast2D" parent="."] +target_position = Vector2(-10, 0) +collision_mask = 16 [node name="Camera2D" type="Camera2D" parent="."] zoom = Vector2(2, 2) @@ -220,3 +220,7 @@ zoom = Vector2(2, 2) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2(2, 0) shape = SubResource("CapsuleShape2D_6r7th") + +[node name="wall_detect_right" type="RayCast2D" parent="."] +target_position = Vector2(14, 0) +collision_mask = 16