Voilà, j’ai remarqué un bug étrange. Lorsque l’on fait tourner un objet par la rotation, en lui appliquant ensuite une force (du moteur physique) dans la direction de l’objet celui-ci se met à ne plus aller dans son sens, en fait il semble tourner en rond. C’est comme si GD calculait une autre position ou orientation de l’objet.
Je précise que d’anciens jeux et test qui marchaient parfaitement ont maintenant ce problème.
Pour le reproduire :
Créez un objet
Définissez lui le moteur physique
faîte des évènements d’ajout de force dans son orientation
Idem pour la rotation
faites des objets référentiels (immobiles
testez
Il me semble que ca me le fait depuis GD 2.
PS : je mettrai si besoin des images et/ou un “jeu” qui isole le problème.
Quand on applique une force, on dit à GD “fais avancer cet objet dans sa direction actuelle”.
Si on lui colle une rotation en même temps, sa direction change elle-aussi. L’objet finit donc par “avancer en cercle” et donc tourner en rond.
De mon coté, je ne rencontre pas (encore) ce problème, car je ne passe pas par le moteur physique pour gérer les mouvements.
Mes astéroides tournent bien sur eux-mêmes (faire +1 à la direction de), tout en avancant vers un point (diriger l’objet vers le centre de l’écran ).
D’accord, mais aucun moyen de résoudre ca ?
Je n’utilisais pas le moteur physique pour SGL, me suis cassé la tête à l’implanter en perdant 2/3 de mon travail qui était devenu inutile… Je n’ai aucune envi de tout devoir refaire.
Je viens de faire un test en faisant avancer un objet en x seulement et en le faisant tourner en même temps : Il bouge absolument pas de l’axe y ( en restant à sa position Y initiale donc ). keineProblem.zip (4.79 KB)
Je viens de tester ton fichier 4ian (longtemps après je sais ).
En fait moi j’applique la force dans le sens de l’orientation de l’objet. (c’est une voiture).
Bon n’ayant pas eu de réponses et étant occupé ces derniers temps j’ai laissé passé.
Malheureusement en me replongeant dans SGL j’ai de nouveau ce problème. Je pense l’avoir un peu plus isolé :
La réaction semble un peu aléatoire; l’objet semble se mettre à effectuer des cercles croissant au fil du temps alors que la force ne varie pas. De plus le phénomène varie aussi à chaque départ d’un nouveau test, sauf dans le cas de tests en mode fenêtré en actualisant avec le bouton adéquat (vert) et non en passant par édition de la scène.
Enfin bon bref, le fait que le phénomène varie à chaque fois est un vrai problème : impossible de s’adapter sans connaître tout les facteurs…
En effet le comportement varie suivant si l’on lance en mode fenêtré, et parfois même au sein d’un même mode.
Je pensais à une histoire de nombre d’images par secondes, mais dans les deux cas ce nombre d’images par seconde est bien limité à 60, et donc ça n’explique pas un tel changement de comportement…
Donc sachant que je n’avais pas remarqué ce problème avant : cela viendrait-il de la compilation avant les tests ?
Désolé si je dis une bêtise, je suis fatigué.
En y repensant, le moteur physique ( en tout cas celui utilisé par GD, Box2D qui est bien connu dans le monde de la 2D ) spécifie clairement qu’il peut y avoir des variances de comportement d’une exécution à une autre. Donc observer de légère variation de trajectoire n’est pas si étonnant en soi. Par contre, le fait que le personnage fasse des trajectoires complètement opposées entre le mode fenêtré ou non est beaucoup plus bizarre. Peut être qu’on si prend mal dans la façon d’utiliser les forces et les moments du moteur physique…