# Applications > Dveloppement 2D, 3D et Jeux > Moteurs de jeux vido >  Godot Engine - Camera2D: Smooth mais effet de saccade

## Notion de fraise

Bonjour  tous!

Je suis en train de faire un petit jeu de plateforme 2D sur Godot, inspir par ailleurs des tutos prsents sur le forum (au passage, merci  ::D: ). J'essaie de mettre en place des plate-formes se dplaant  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 dplace, je dcide donc de faire un systme de parentage/dparentage.
Voici la partie du code concerne, 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 scne.

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 camra se met instantanment de sorte  ce que le personnage soit au centre de l'cran. 

J'ai bien essay de faire un systme D, par exemple en rcuprant la vitesse de la plateforme avec la mthode get_collider_velocity() (disponible si la plateforme est de type KinematicBody2D), mais cette mthode me renvoie toujours zro.

Quelqu'un aurait-il une ide pour rsoudre le problme?

(Si par hasard j'ai gar des trucs importants pour la comprhension de la question, n'hsitez pas  me demander!)

----------


## LittleWhite

Bonjour,

Utilisez-vous le moteur physique ? J'esprais qu'avec le moteur physique et qu'en donnant une force pour dplacer la plateforme, le joueur puisse suivre la plateforme, sans reparentage.
Sinon, on peut dplacer la camra que si le joueur arrive sur les bords de l'cran, mais je doute que cela soit une solution.
La solution, serait plus lorsque le joueur est parent  la plateforme, la camra se voit fixer sa position en brut (plus aucun smooth). Cela ne donnerai pas mieux ?

----------


## Notion de fraise

Bonjour, merci pour votre rponse  ::): 

Tout d'abord, j'ai fait une erreur d'algorithme: la mthode is_a_parent_of() retourne vrai pour le parent de la node, mais galement pour le grand parent, etc. . Pour reparenter le personnage  la node de base, il faut remplacer  

```
if(!defaultParent.is_a_parent_of(self)):
```

par


```
if (get_parent() != defaultParent):
```

Ceci tant, le reparentage du personnage lorsqu'il saute ou tombe de la plateforme fonctionne, MAIS, pour la plateforme mobile(et pas les autres) cela ne fait que rajouter des problmes  ::aie:: . a ne fait rien, de ce ct c'tait dj bien mal parti.
Je vais donc laisser tomber le systme de parentage, et continuer sur l'autre piste.
Le personnage est pour l'instant de type KinematicBody2D, mais j'utiliserai le type RigidBody2D si a s'avre ncessaire.

 suivre!

----------


## Notion de fraise

a y est!

L'ide, c'est d'appliquer une "force" au mouvement du personnage. J'ai ajout une variable xForce(j'ai fait mieux en nom de variable) initialise  zro. Cette variable va tre ajoute  la valeur du vecteur de mouvement(ici, nomm velocity) du personnage.
On rcupre le script de la plateforme mobile:


```
const plateform_patter_h_class = preload("plateforme_pattern_horizontal.gd")
```

Celui-ci doit avoir, comme le script du personnage, un vecteur de mouvement. On peut en rcuprer l'ordonne (chez moi ce sera avec la mthode get_horizontal_velocity())

On utilise xForce  chaque fois que ncessaire, par exemple si on veut aller  gauche, on aura:


```

```

On modifie xForce comme suit:


```

```

La mthode set_snapped_to(je vais changer les noms plus tard) est appele dans la mthode isGrounded() lorsque le personnage entre en contact avec l'objet collider.

On rinitialise xForce lorsque le personnage saute ou n'est plus en contact avec le sol:


```

```

Pige  patate:
Attention! Si votre vecteur de mouvement du personnage prend dj en compte la variable delta, xForce ne doit pas tre gal  quelquechose*delta, sinon la "force" ne sera pas applique correctement!

Voil, j'espre avoir t  peu prs clair et concis  ::):

----------

