J’occupe depuis quelques jours (3 ) mes soirées post boulot sur " l’apprentissage " de Game Develop dans l’optique de créer, sans grande prétention, un petit jeu (à destination personnelle/familiale) qui trotte dans ma caboche depuis plusieurs années et qui, apparemment, n’a pas d’équivalent dans le commerce.
Bref, loin de prétendre à l’avancement du projet, je bricole un peu sur Game Develop afin d’organiser un peu mes idées et vérifier la faisabilité de mon objectif selon les capacités du bonhomme / programme.
Je bloque depuis quelques heures sur une phase dont je ne trouve pas la solution :
Mon objectif est de déplacer un objet “O” vers des coordonnées “X” et “Y” après avoir cliqué gauche sur un objet “A”.
Mon script est le suivant :
Les problèmes :
Si je laisse le paramètre amortissement à 0, le déplacement s’arrête si je relâche le bouton gauche de la souris.
Si je définit le paramètre amortissement à 1, l’objet “O” ne s’arrête pas lors de son passage sur la position “X” et “Y”.
La solution doit être relativement simple mais je ne trouve pas mon erreur.
Attention, des coordonnées ne sont jamais précisément égale à une valeur. En effet, l’objet peut se trouver à la coordonnée 302,9 puis la frame suivante à la coordonnée 303,1, auquel cas, sa coordonnée ne sera jamais égale à 303. Donc, je te conseille d’utiliser une comparaison plutôt qu’une égalité.
En effet en testant la position “X” + ou - 10, cela fonctionne parfaitement.
Pour plus de précision et améliorer ma culture GD, la plage de coordonnées à considérer est toujours de 2 en 2 pixels ou y a t il corrélation avec la force donnée à l’objet ?
En clair, moins je donne de force, plus je pourrai être précis sur les coordonnées de position d’objet et inversement ?
En fait, à chaque frame, Game Develop bouge l’objet de :
(vitesse * delta) "pixels"
avec delta qui est l’intervalle de temps (en secondes) depuis la dernière frame affichée (de l’ordre de la milliseconde)
Avec une vitesse très élevée, l’objet pourrait passer directement de 303 à 308 pixels par exemple.
Aussi, même avec une vitesse raisonnable, si l’ordinateur rame un coup et que l’intervalle entre les deux frames est élevé, il va y avoir un gros décalage.