Bonjour,
je suis en cours de création d'un ptit jeu en 2D (un BubbleBobble like) pour un ptit challenge d'un site. Je traval en ce moment sur les mouvements de mon personnage avec gestion de collisions et tout le binz mais j'ai un problème de detection de fin de plateformes ... explications ...
Mes plateformes sont constituées de blocs d'une taille prédéfinie dans le fichier du level courant., Un flag est attribué au blocs, 0 un bloc normal constituant les plateformes, 1 représentant un bloc pour l'extrémité gauche d'une plateforme et 2 représentant l'extrémité droite.
Mon personnage lui possède un flag qui me permet de déterminer le sens de la marche (0 = gauche, 1 = droite).
Pour que le personnage tombe d'une plateforme, il me faut en meme temps déterminer qu'il se trouve bien sur un bloc représentant une extrémité d'une plateforme, tests effectué d'apres le sens de la marche pour savoir s'il se trouve sur un bloc avec la bonne configuration mais aussi je doit determiner le moment où il tombe ... facile, mais je ne peut pas tester les deuxx conditions en meme temps, c'est ... contradictoire en quelques sorte .... voici mon code, j'arrete de parler parce que sinon j'arrete plus
Quand le personnage avance vers la droite cela fonctionne mais les problèmes commencent a venir quand il marche vers la gauche, il ne tombe pas de la plateforme parce que la 1° condition n'est plus remplie alors je ne sais plus quoi faire et comment le faire, j'avoue que c'est la 1° fois que je code un truc de ce genre
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
17
18
19
20
21
22
23
24
25 else { /* ICI COMMENCE LE PROBLEME */ /* * Le personnage se trouve sur un des bord d'une plateforme, * on le fait tomber. */ if (bloc.x <= hero.x) { if (p_hero_st->direction == 0 && hero.x + hero.w <= bloc.x && bloc_end == 1) { /* LE PERSONNAGE TOMBE !! */ p_hero_st->hero_pos.y = GAME_ZONE_BOTTOM - HERO_SIZE; } /* FIN DU PROBLEME */ else if (p_hero_st->direction == 1 && hero.x >= bloc.x + bloc.w && bloc_end == 2) { /* LE PERSONNAGE TOMBE !! */ p_hero_st->hero_pos.y = GAME_ZONE_BOTTOM - HERO_SIZE; } } }
Toute aide sera la bienvenue
Partager