CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • Black Friday
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : S'arrêter si collision en général

DébutPage précedente
12
Page suivanteFin
PrisonerOfFate PrisonerOfFate
MP
Niveau 4
14 juin 2010 à 23:09:50

:salut:

donc voilà en fait c'est un problème assez général qui m'est posé :(

Je fais une sorte de mario.
donc mon héros a plusieurs paramètres, les animations, la position sur le terrain et la vitesse de la direction vers laquelle il va en gros.

pour l'instant le terrain est plat, et il y a une sorte de caisse au milieu du chemin.
Quand le héros marche vers la caisse, je veux simplement qu'il s'arrête.
Du coup je met sa vitesse à 0 pour qu'il n'avance plus.
Seulement si je fais ça, il restera bloqué sur la caisse indéfiniment parce qu'il reste toujours en état de collision sur celle-ci, et donc il reste immobile.
Si je met sa vitesse initiale à sa valeur négative, ça marche un peu mieux : il se fait un peu "pousser" de la caisse, du coup après on peut marcher vers l'autre direction, mais si le joueur arrive à s'arrêter pile poile à l'endroit où il y a la caisse et qu'il marche vers la direction opposée, il traversera celle ci.
J'ai tenté de régler ça en mettant la vitesse du héro à 0 mais en le téléportant un peu plus à côté mais ça fait pas réaliste.

Enfin voilà, je voulais savoir comment c'était géré dans les vrais jeux ? :question:

godrik godrik
MP
Niveau 26
14 juin 2010 à 23:26:00

la teleportation c'est ce qui marche le mieux je pense. Mais il faut bien faire attention a ce que le moteur d'affichage ne le voit jamais DANS la caisse.

Shakaan Shakaan
MP
Niveau 10
14 juin 2010 à 23:46:31

Tu peut calculer la collision sur sa prochaine position et si elle est valide, tu le met dessus, sinon tu le laisse a sa place (ou tu le recale contre la caisse).

PrisonerOfFate PrisonerOfFate
MP
Niveau 4
14 juin 2010 à 23:53:49

ouais le problème c'est qu'il arrivait dans la caisse quand même un tout petit peu, même en faisant la téléportation ça pouvait toujours arriver :(

Shakaan pas bête, je vais tenter de faire ça :oui:

:merci: pour vos réponses

Shakaan Shakaan
MP
Niveau 10
15 juin 2010 à 00:05:29

Tu peut tester la collision sur un espace plus grand que la caisse, aussi, et si le perso rentre dedans, tu le positionne le long de cet espace, comme ça il rentrera jamais dans la caisse et tu sera bloqué correctement partout :oui:

supersonic_33 supersonic_33
MP
Niveau 8
15 juin 2010 à 00:24:22

Bah c'est assez simple à faire, mais il faut y penser:

Au lieu de faire une varible qui teste la collision par exemple, tu en fais 4. Une haut,bas gauche droite... Donc s'il arrive et touche le côté gauche de la caisse, tu mets Déplacement_droit = interdit, ainsi il ne peut plus se déplacer vers la droite, mais dans les autres directions, oui :)

Shakaan Shakaan
MP
Niveau 10
15 juin 2010 à 00:30:52

C'est violent comme technique :doute: ça multiplie les variable et les conditions portant sur elles..

supersonic_33 supersonic_33
MP
Niveau 8
15 juin 2010 à 04:02:19

C'est pas si mal que ça, je l'ai déjà utiliser et c'est pas si mal...

PrisonerOfFate PrisonerOfFate
MP
Niveau 4
15 juin 2010 à 11:19:11

Je vais essayer faire la technique de Shakaan qui a l'air plus rapide et moins lourde pour le décor :oui:

La technique de supersonic c'est mieux pour les ennemis / interrupteurs (genre ceux où on doit se placer au dessus) je pense, mais ça a l'air moins adapté au décors.

Allez je m'y met cette après midi :noel:

PrisonerOfFate PrisonerOfFate
MP
Niveau 4
15 juin 2010 à 11:37:30

Oh mon dieu ça marche nickel et en plus en 2 secondes c'était fait :bave:

:merci: !

Shakaan tu es un génie :bave: j'y aurai jamais pensé :noel:

Shakaan Shakaan
MP
Niveau 10
15 juin 2010 à 18:09:53

Moi il m'avait fallut un moment pour établir ça :peur:

shoulda shoulda
MP
Niveau 5
19 juin 2010 à 03:46:39

putain javais eu exactement mot pour mot le meme probleme dans mon rpg, et javais finis par laisser tomber car javais beau essayer tout ce que ta essayer il y avait tjs un probleme ... comment faire ?

PrisonerOfFate PrisonerOfFate
MP
Niveau 4
19 juin 2010 à 11:32:45

En gros j'ai fait deux méthodes qui renvoient la prochaine position X et la prochaine position Y de mon sprite en passant comme paramètre le temps passé (du coup la méthode pour X par exemple retourne juste x + vx * tempsPasse, où x c'est la position en x du sprite et vx le mouvement (vecteur en gros :noel: )
du coup après j'ai eu juste à faire la même méthode pour s'arrêter sauf que j'utilisais ces deux méthodes, et pour la valeure du temps passé en gros j'ai utilisé ça :
long tempsPasse = System.currentTimeMillis() - tempsCumule;
tempsCumule += tempsPasse;

je précise que je fais tout en java donc c'est un peu plus simple qu'en C mais le principe est le même :noel:

shoulda shoulda
MP
Niveau 5
20 juin 2010 à 00:58:32

PrisonerOfFate ca t'interesse pas de t'allier avec moi pour coder un rpg 2d en c++/sfml , je suis deja pas mal avancer mais seul c est pas sim ple ...

PrisonerOfFate PrisonerOfFate
MP
Niveau 4
20 juin 2010 à 17:24:41

Ça aurait été avec plaisir, mais je suis déjà sur mon projet et j'aime pas interrompre ce que je fais, ni faire deux choses à la fois :noel:

jay81 jay81
MP
Niveau 3
26 juin 2010 à 19:57:29

Salut,

Tu peux aussi télécharger le code source de mon jeu (et l'essayer au passage) : Wiwi's Adventures 2 sur mon site : http://www.rpgamer.fr . Le code des collisions se trouve dans les fichiers .c correspondants : un fichier pour les collisions avec la map (tilemapping), deux pour les collisions joueur-monstre, monstre-décor, épée-monstre, enfin tu verras ;) .

D'ici peu, j'expliquerai tout ça dans un tuto (toujours sur mon site), mais il est encore en cours d'écriture ;) .

En espérant que cela puisse t'aider à avancer sur ton projet,
Jay81

shoulda shoulda
MP
Niveau 5
27 juin 2010 à 05:24:31

Jay81 ---> ce qui est chiant c'est que tu code en C/sdl et nous on code en c++/sfml ... tu pourrais pas vivre avec ton epoque ??

jay81 jay81
MP
Niveau 3
27 juin 2010 à 09:29:56

"Tu pourrais pas vivre avec ton époque ?" -> je ne vois pas le rapport : C++ n'est pas supérieur à C. Qui plus est, ma dernière version utilise un wrapper SDL et fonctionne donc sous OpenGl ;) .

Maintenant, pour ce qui est du code même des collisions, tu peux le repomper en C++ sans presqu'aucune transformation. Maintenant, si cela ne t'intéresse pas, libre à toi de chercher ta propre méthode ;) .

pilo1488 pilo1488
MP
Niveau 10
27 juin 2010 à 12:46:01

"ce qui est chiant c'est que tu code en C/sdl et nous on code en c++/sfml ... tu pourrais pas vivre avec ton epoque ?? "
pas mal celle la :)

godrik godrik
MP
Niveau 26
27 juin 2010 à 22:44:27

jay81, ne sais tu pas que si tu ne fais pas du C++ ce n'est pas bien et que a partir du momnet ou tu utilises l'api SDL alors c'est lent ?
Tu ne sais pas que sfml c'est le bien incarne dans une lib de graphismes ? et que tout projet qui ne l'utilise pas est voue a l'echec car il sera punie par le grand mechant dieu "la programmation objet c'est trop bien je l'ai lu sur un forum" ?

</sarcasmes>

DébutPage précedente
12
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment