Bonjour à tous!
Je suis en train de faire un petit jeu de plateforme 2D sur Godot, inspiré par ailleurs des tutos présents sur le forum (au passage, merci ). J'essaie de mettre en place des plate-formes se déplaçant à l'horizontal. Dans un premier temps, je constate que mon personnage, en étant sur la plateforme, ne suit pas le mouvement horizontal de celle-ci lorsqu'elle se déplace, je décide donc de faire un système de parentage/déparentage.
Voici la partie du code concernée, le script est sur le personnage:
currentGround est l'objet correspondant à la plateforme mobile, que l'on obtient dans une autre partie du code, et defaultParent est la Node racine de la scène.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 if (isGrounded() and !isJumping): if (!currentGround.is_a_parent_of(self)): self.get_parent().remove_child(self) currentGround.add_child(self) else: if (!defaultParent.is_a_parent_of(self)): self.get_parent().remove_child(self) defaultParent.add_child(self)
Ça fonctionne, le personnage devient enfant de la plateforme, sauf que ça me donne un effet de saccade affreux! En effet, il se trouve que ma camera, qui est enfant du personnage, a un effet de smooth. Or celui-ci, visiblement, ne s'applique qu'au parent, et non au grand parent du coup, au moment du reparentage du personnage, la caméra se met instantanément de sorte à ce que le personnage soit au centre de l'écran.
J'ai bien essayé de faire un système D, par exemple en récupérant la vitesse de la plateforme avec la méthode get_collider_velocity() (disponible si la plateforme est de type KinematicBody2D), mais cette méthode me renvoie toujours zéro.
Quelqu'un aurait-il une idée pour résoudre le problème?
(Si par hasard j'ai égaré des trucs importants pour la compréhension de la question, n'hésitez pas à me demander!)
Partager