Ma collision ne marche plus...

J’ai pourtant essayé la collision avec et sans les masques de collisions et je veux faire:
-Quand Azertyndows est en collision avec batterie, supprimer l’objet batterie,
Et l’objet reste la, sans rien faire.
Merci de m’aider

Je ne serai jamais un :nerd: et encore moins un :ugeek:

Je pense que tes EV ne sont pas bien programmer et ce n’est pas la faute de GD (je ne vois pas pourquoi GD s’acharnerai sur toi (quoi que je le comprend :laughing: ))

Bonjour,

Précise un peu plus ton problème, et affiche une image de tes évènements s’il te plaît.

@+
sototo

Voici ma capture:
Capture game develop 3.JPG
Et sa ne marche pourtant pas.
Je veux que sa se supprimme en fait. c’est sa qui marche pas! :frowning:

Ce que tu pourrais faire déjà, c’est de juste vérifier la collision, et d’augmenter la variable Energie de 25 (+25) et de supprimer ton objet Batterie (t’aurais juste besoin d’un évènement comme ça, car là j’en devine d’autres plus bas pour le même comportement).
Là normalement tu dois déjà avoir l’Energie à 25 avant de pouvoir le récupérer, or si tu fais diminuer ce que tu récupère avant par 1 de temps en temps, il est probable que tu n’ai que 20 ou 19.

Je crois avoir compris, merci Colin! :slight_smile:

Yeah! Sa marche pas! :angry:

Alors fais voir plus que ça, car là apriori c’est censé marcher.

Ce serait plus logique si il faisait (en partant du principe que l’énergie de Azertyndows plafonne à 100) :

Si Azertyndows est en collision avec Batterie
Si Energie != 100
– faire +50 à Energie
– supprimer Batterie
----- Si Energie > 100
----- faire =100 à Energie

Colin-> Y’a tous mes EV, là!




Maintenant, tu as tout en détails!

mtzaram-> J’ai rien compris, désolé.

Hum, c’est un peu mal foutu tout ça.

Pour les téléporteurs, pourquoi tu déplaces pas directement ton objet au lieu de le supprimer et de le recréer ?

Essayes déjà de retirer la collision par masque de collision pour voir.

Téléporteur-> J’aime bien cette technique qui marche! :laughing:

Collision sans masques-> j’ai déjà essayé, sa marche pas. :frowning:

Je me demande vraiment, ce que t’as bien pu faire :stuck_out_tongue:
Tu veux bien envoyer le jeu en version portable ? (je pourrais avoir accès à tout et profiter du debugger)

Version portable…Mmmmh…
Qu’est-ce que c’est au juste??? :confused:

Il à quelques point à revoir:

au lancement de la scène faire = 25 a la variable énergie

Si ta variable est déjà initialiser à 25 ça ne sert à rien :smiley:

Faire +25 à la variable batterie

essaye avec =25 car si le perso se trouve sur un objet qui met à 50 cela fera une boucle et la variable sera augmenter de 25 toute les miliemes de seconde :laughing: mais bon on dirai que tu a protégé cela avec une condition sur cette variable

Comme tu veut mais si tu complexifie le téléporteur (comme ça m’est arriver) j’ai dut tout refaire car quand il y à 2 paires de téléporteur
le perso peut se téléporter du premier au dernier sans passer par celui que tu veut alors:
Halte à la triche :slight_smile:

J’irais ajouter Ceci

Voilà! L’archive s’appelle voilà, et est en .zip!
Voila.zip (1.34 MB)

Ton perso touche une batterie, et ça remplit son énergie.
Ton problème est que tu dois gérer les différents niveaux d’énergie (25, 50 ,75).
C’est pas la peine.
Faut juste ajouter 50 à l’énergie, et remettre l’énergie à 100 si elle dépasse le maximum.

L’important est donc que le personnage ne soit pas à 100 d’énergie.

Mets ça en évènement 4 :

Si Azertyndows est en collision avec Batterie
Si Energie != 100
– faire +50 à Energie
– supprimer Batterie

et en évènement supplémentaire :

Si Energie > 100
---- faire =100 à Energie

Pour ton code, en évènement 25, l’énergie ne peut pas être égale à 25 et 50 en même temps !
Il y a déjà un problème.

Tu dois appliquer le même principe que la batterie.
L’important, c’est que énergie ne descende pas en dessous de 0.
Donc :
Si collision avec Ennemis
---- faire -variableInitiale(dommages) à energie

Enemis est un groupe où sont listés tous les ennemis du jeu
variableinitiale(dommages) est une variable initiale présente dans chaque objet ennemi, qui indique la quantité de dommage en cas de collision.

Pour ton Dead_mark, sa variable Dommages devrait être de 200 (pour être sûr que l’énergie de azertyndows soit à zéro).

Ensuite, tu crées un évènement :
Si énergie <= 0
------- on enclenche la séquence de game over (on supprime le bonhomme, on affiche un texte, on change la musique, etc. )

Disons que:

Energie =25: Mario standard.
Energie =50: super Mario.
Energie =75:Mario de feu, de glace, hélice, etc…
Energie =100: Mario invincible.

Ce serait un truc comme sa, mais avec Azertyndows!

J’ai regardé un peu ton archive. Je crois que tu es allé trop vite en besogne …
Les 3/4 de tes objets devraient être en global. Ainsi, tu n’aurais pas besoin de les récréer dans l’éditeur d’objet de chaque scène (ou répercuter les changements dans chaque scène).

Tu devrais cloisonner ton code avec les évènements externes, pour les mêmes raisons.
Un évènement externe qui gère le déplacement du héros, un évènement externe qui gère les ennemis, un évènement externe pour l’interface, etc.
Ainsi, lorsque tu modifies un évènement externe, cette modification se répercute dans toutes les scènes où il est lié.
Par exemple, si tu trouves que le perso est trop lent, tu modifie l’evènement externe de déplacement, et ce sera appliqué dans toutes les scènes le référençant.

Si tu as 50 niveaux, et que tu te rends compte d’un bug dans la gestion des collisions (lié à l’évènement ou au masque de collision), qu’est-ce que tu vas faire ?
Avec ton code actuel, tu vas devoir repasser dans tous les niveaux pour modifier le même évènement.
Avec un code en évènement externe+objets globaux, tu modifies un évènement/objet et c’est bon. Bien plus efficace.

Par ailleurs :

  • les masques de collision de tes sprites sont trop larges. Ils devaient être 2 fois plus petits (à la louche) que le sprite. C’est plus simple pour négocier les plateformes
  • Pas besoin de se saouler avec les directions manuelles, une rotation automatique aurait fait le même boulot (seules les touches fléchées gauche-haut-droite auraient été utilisées)
  • Méfies-toi des plateformes hautes. Si le joueur tombe entre deux colonnes, il est coincé et doit faire reset (niveau inside le windows).
  • Quand tu files une archives à tester, indique quelle scène. Les faire une par une pour comprendre comment ça marche, et laquelle doit être corrigée, c’est un peu long.