coleaumur: détecte la plateforme avec un RayCast

Uniquement se reposer sur is_on_wall() ne fonctionne pas, car
move_and_slide() parfois ne nous indique pas qu'une collision avec
un mur a eu lieu. ça doit être à cause d'un pixel de décalage ou
un truc du genre.
Pour palier au soucis, j'utilise deux RayCast, un à gauche et un
à droite. si ils sont trigger, alors ça veut dire qu'un mur est dans
le coin. Ils sont uniquement sensibles aux plateformes.
Voilà voilà, maintenant s'accrocher au mur ne nécessite plus de
maintenir la touche de direction dans le bon sens.
This commit is contained in:
Thomas Lavocat
2023-04-29 15:43:02 +02:00
parent 66293d6bb2
commit c96994ee88
2 changed files with 16 additions and 8 deletions

View File

@@ -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