CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Info] Technique pour collision.

lesniper53
lesniper53
Niveau 6
17 septembre 2014 à 16:13:00

Bonjour,

je programme un petit rpg pour m’entraîner en java, et j'ai besoins d'info sur les collision : J'ai utilisé la technique des rectangles, si il rentre en collision je le détecte donc la détection c'est bon, c'est quoi faire après, au début j'ai décidé de bloquer mon personnage quand la collision est vrai et je le faisais reprendre sa plus ressente position qd il n'était pas en collision. Seul problème c'est que du coup les collisions son pas très propre : Genre quand on veut longer un mur ( ex :si on veut aller vers le haut et qu'il y a un mur, on doit appuyer a droite sans appuyer vers le haut sinon le perso n'avance pas a droite ( car il est repousser a sa dernière position ), alors que j'aimerais pouvoir rester appuyer vers le haut tout en longent le mur vers la droit ), il y a aussi le fait que la collision est pas "hyper propre" car le perso est un peut repousser en arrière ( enfin a sa dernière position ) ...

Donc en gros j'aimerais savoir si vous avez des conseilles/technique ou si vous avez carrément une autre méthode détection de collision ?

Je précise je programme en java avec libgdx. Merci d'avance a tous.

Lapintade
Lapintade
Niveau 30
17 septembre 2014 à 16:17:52

Je te conseil de découper ton déplacement en 2. Tu déplace selon chaque axe. Tu déplace d'abord ton perso vers le haut et tu fait ta gestion (comme tu fais déjà) et ensuite tu le déplace vers la droite.
En gros au lieu de faire un test avec un déplacement en diagonal, tu en fais deux, avec deux déplacements "simples" qui suivent tes axes.
Ainsi ton perso longera ton mur.

L'ideal ensuite est de calculé la position "intersection" quand tu detecte une collision. Remettre dans une position valide, c'est une bonne idée, mais ca peut etre un peu vilain. Vaut mieux calculer la position la plus proche de ta destination, et qui ne collisionne pas.

pilo1488
pilo1488
Niveau 10
17 septembre 2014 à 16:20:48

Salut!

Alors ce qu'il te faut si tu utilise des AABB (rectangle aligné sur les axes), c'est un sweep test :
ca va te permetre de calculer la distance que peu parcourir ton objet avant d'etre en collision avec un autre.
Une fois que tu aura fait ce premier deplacement, il te suffit de le modifier pour qu'il continue dans une direction valide par rapport a cette première collision (et recommencer, en pratique tu autoriser qu'une collision max par frame).

http://www.gamedev.net/page/resources/_/technical/game-programming/swept-aabb-collision-detection-and-response-r3084

Un petit ajout par rapport à l'article : il faut impérativement faire une broadphase pour qu'il fonctionne, c'est a dire étendre ton AABB avec le déplacement. Avant d'utiliser l'algorithme de sweep, tester que ton AABB étendu interesecte avec celle contre la quelle tu veux tester la collision.

lesniper53
lesniper53
Niveau 6
04 octobre 2014 à 23:05:38

Après plusieurs semaine de test, je n'est réussir a faire qu'une technique proposé mais qu'a moitié ( la première ), je ne vois pas comment détecter les collisions avec des rectangles sans être obliger de faire aller le perso en arrière, je ne vois pas comment faire un collision propre ... Je commence réellement a désespéré ... Je demande encore une fois votre aide !

chiagedeluna
chiagedeluna
Niveau 10
04 octobre 2014 à 23:11:39

c'est un problème de détection de collision ou de réaction à la collision en fait?

lesniper53
lesniper53
Niveau 6
05 octobre 2014 à 10:37:58

De réaction a la collision, comment faire pour qu'une fois la collision détecter que mon personnage ne puisse pas rentré dans l'objet tout en ayant des mouvements normales ! ( comme dit plus haut je l'ai fais avec des rectangles, mais quand je vois qu'il y a collision, le personnage est renvoyer a sa dernière position où il n'était pas en collision, mais du coup on dirait qu'il s’éclate la tête contre le mur, et en plus ça bloque les mouvements en diagonal, c'est hyper bizzard ... ) Si vous avez une solutions/conseille/autre technique ... Mon but est d'avoir a la fin juste a mettre les coordonnées des box où il doit y avoir collision et après c'est bon, je veut pas avoir a chaque fois a retourné dans la class collision, une class par niveau...

lesniper53
lesniper53
Niveau 6
05 octobre 2014 à 11:30:21

UP :)

chiagedeluna
chiagedeluna
Niveau 10
05 octobre 2014 à 13:48:04

Up interdits sur le forum. Sinon tu dis qu'il va dans le mur et qu'il est rejeté ensuite? peut etre faut il déja faire tout le traitement des collisions avant d'afficher quelque chose. Il vaut mieux essayer de voir si sa prochaine position est hors obstacle ou non et si il y a un blocage, ne pas le faire se déplacer. Quand aux diagonales, tu peut te baser sur la direction qu'il avait en arrivant peut être.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment