Bien le bonjour/bonsoir,
Je reviens vers vous car je deviens un peu fou. Après avoir passé des heures à y réfléchir, je ne parviens pas à résoudre mon problème.
J'ai un jeu, représenté dans une fenêtre comme ci-dessous :
Les "bonhommes" que vous voyez dans la fenêtre apparaissent en haut, et sont censés aller dans une direction (droite ou gauche), et s'ils arrivent au bout d'une plate-forme, tomber. Donc il y a en quelque sorte une notion de gravité.
Et là est le problème. J'ai ajouté une variable "gravity" à la structure de mes bonhommes, celle-ci vaut 1 lorsque qu'ils sont dans le vide, et 0 lorsqu'ils sont sur une plate-forme. Donc je dis que gravity vaut toujours 1, jusqu'au moment où la position du bonhomme est la même que celle d'une plate-forme, et là gravity passe à 0, donc non incrémentation de la position sur l'axe des Y du bonhomme.
J'utilise les listes pour les plate-formes et les bonhommes.
J'avais une fonction bien compliquée mais qui me semblait logique, mais qui ne marchait pas, alors je me suis ramené à une fonction beaucoup plus basique, mais qui ne marche toujours pas!
La voici :
Et ensuite j'ai une fonction qui parcourt la liste de bonhommes et qui, si la partie "gravity" de ce bonhomme vaut 1, incrémente sur l'axe des Y.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 void collide_between_monsters_platforms(object_list * pPlatform_list, object_list * pMonster_list) { object_list * tmp; while (pMonster_list != NULL) { tmp = pPlatform_list; while (tmp != NULL) { if (pMonster_list->obj->position.y == tmp->obj->position.y) pMonster_list->obj->gravity = 0; tmp = tmp->pNext; } pMonster_list = pMonster_list->pNext; } }
Et... Gravity ne passe jamais à 0 quelque soit le bonhomme...
Le cas est peut-être compliqué à comprendre, et j'en suis désolé!
Merci d'avance de vos réponses!
Cordialement.
Partager