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

Algorithme Collision 2D

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
Nawako
Nawako
Niveau 8
26 novembre 2012 à 18:30:08

Salut,

Je programme sous XNA en C# et depuis toujours je supporte pas m'occuper des collisions.
Bref, si quelqu'un aurait de la docu ou un tuto interessant pour m'aider a trouver une bonne facon de gerer les collisions rectangulaire (ou meme per-pixel tiens..) ca m'aiderais enormement!

Merci d'avance :)

Nawako
Nawako
Niveau 8
26 novembre 2012 à 18:54:29

Ben pour la rectangulaire seulement la reaction.
Per-pixel il me faudrait des solutions pour les deux.

En fait ce dans mon programme je controle un rectangle, et il y a un obstacle rectangulaire, quand je rentre dans un des "murs" et que j'appuie simultanement sur deux directions (donc en diagonale) des fois ca me 'teleporte' a un autre mur..

mon code au cas ou :

http://pastebin.com/dKbWRGV4
Cette methode est presente dans la classe Obstacle (this.rectangle correspond donc au rectangle de l'obstacle)

Neofungamer
Neofungamer
Niveau 22
26 novembre 2012 à 18:59:01

Indice : un élément peut se composer d'une multitude de rectangles ;)

Nawako
Nawako
Niveau 8
26 novembre 2012 à 19:03:20

Hoooooooo j'ai compris! mais est-ce une bonne idee de departager l'obstacle en 4 rectangle (un pour chaque mur)?

Ca fait 4 variables au lieu d'une quoi..

Nico54620
Nico54620
Niveau 2
26 novembre 2012 à 19:06:35

if (Picturebox1.Bounds.IntersectsWith(Picturebox2.Bou
nds))
{

}

Si c'est du C#.Net, tu peux essayer d'utiliser ça ;)
Entre { }, tu place se que tu veux faire en cas de colision:
Exemple -> Reculer d'un pixel vers la droite ou vers la gauche, cela dépend de tes choix et de la direction de l'objet qui sera mis en colision.
Par exemple, si tu déplace ton rectangle par la droite, s'il touche un autre rectangle, fais le reculer d'1 pixel vers la gauche, ça l'empêchera d'avancer =)

J'espère t'avoir aider

Nico54620
Nico54620
Niveau 2
26 novembre 2012 à 19:13:40

@Celeniak: c'est exactement se que j'ai expliquer en dessous avec 1 minute de retard sur toi, bien vu ;)
effectivement, le code dans le message ci-dessus detecte si les deux éléments 2D se touchent (au pixel près) et après, c'est a toi de choisis en fonction de X (gauche/droite) ou Y (Haut, Bas) se que tu veux faire.
Petite simulation: Tu est dans la rue, tu est bourré, tu cours comme un malade et tu te tape un mur ou un poteau.. qu'est ce que tu va faire ? tu va reculer ! c'est un peut le même principe sauf que le recul est presque invisible ^^

Flipnother
Flipnother
Niveau 10
26 novembre 2012 à 19:17:23

Jerry de l'exemple de Nico :noel:

Nawako
Nawako
Niveau 8
26 novembre 2012 à 19:25:19

@Celeniak, C'est exactement ce que je fais.
Le probleme est que si je presse HAUT (et donc me dirige en haut) puis apres GAUCHE en meme temps (donc me dirige en haut a gauche), cela mettera la variable de direction de mon personnage a gauche parce que la derniere touche pressee est GAUCHE.

Du coup meme si je touche le mur du bas (donc me dirigeant en HAUT, a gauche) ca me remettera a la gauche du mur, a cause de la direction.

Je suis surement pas comprehensible du tout mais bon, je pense que faire un rectangle de collision pour chaque cote du mur est la solution la plus simple.

Nawako
Nawako
Niveau 8
26 novembre 2012 à 19:41:04

Donc je dois faire deux IF (Collision avec obstacle)
un pour l'axe X et un pour l'axe Y?

je vais essayer plus tard :)

merci beaucoup pour votre aide!

Nawako
Nawako
Niveau 8
26 novembre 2012 à 20:49:45

Beuuh je galere encore..

http://pastebin.com/9JNnuwvu

J'ai finalement fait 4 rectangle de collisions pour chacun des cote de l'obstacle.

Mon probleme est que quand je touche un mur HAUT ou BAS et ben ca me met a gauche.

Ca me fais chier ces collisions :(

Nawako
Nawako
Niveau 8
27 novembre 2012 à 11:34:24

Yes! J'ai reussi en verifiant que quand une collision se passe ca prends en compte la touche appuyee en ce moment au lieu de la variable de direction.

Merci pour ton aide Celeniak :)

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