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

Collision glissantes 2D Type RPG 2D

cederavic
cederavic
Niveau 7
10 octobre 2003 à 22:47:31

J´ai essayer pas mal de solutions mais toutes ne me satisfaisent pas...
La meilleur que j´ai reussi consiste à :
Voir dans quelle direction vas le personnage et si par exemple il vas en haut à gauche on fait une suite de test du genre :
; on essay de le faire glisser en haut
PosX = OldPosX
PosY = OldPosY
PosX - 2; 2 ou vitesse de deplacement
Si collision ; on tape un mur en haut alor on essay de le faire glisser à gauche
PosX = OldPosX
PosY - 2
Si Collision ; on est dans un angle, on peut rien faire
PosX = OldPosX
PosY = OldPosY
FinSi
FinSi

Voilas en gros...
Si vous connaissez un system un peut mieu que celui la, je suis preneur :)
Merci
PosX = OldPosX
Pos

JeanYvesYves
JeanYvesYves
Niveau 10
11 octobre 2003 à 01:28:32

Bon, alors collision 2D pour un gars qui se déplace dans un labyrinte, vu de haut :

pour moi j´y vois plus simple.

tu consideres le centre de ton bonhomme
soit ( Px,Py) les coordonnées de ce centre
tu définis 4 points abstraits :

Up = ( Px, Py - k)
Down = ( Px, Py + k)
Left = ( Px - k, Py)
Right = ( px +k, Py)

Avec k en gros le " rayon" de ton bonhomme ( a définir toi meme)

Le test est simple : tu peux considérer une fonction TestCollis() qui teste si Up, Down, Left, Right sont DANS un mur.

il ne te reste plus qu´a modifier directement ta boucle de controle du genre :

Si ( PressLeft() && ! TestCollis(Left)) déplace_le_mec_a_gauche()

et pareil pour les 3 autres directions.
Je pense que tu vois ce que je veux dire non ?

Dis moi si tu veux + de détails

cederavic
cederavic
Niveau 7
11 octobre 2003 à 10:01:44

Ben je pense pas que ça ira vraiment vu que je deplace mon pero a la sourie et que ce sont de collision par pixel. Je me demande toujour comment il font dans les jeu commerciaux :snif:

Lightness1024
Lightness1024
Niveau 10
11 octobre 2003 à 17:43:20

ce qu´il faut faire c´est des modelisations des objets du monde en formes geometriques.
bon mais des compositions de lignes suffiraient.

ce qu´il ne faut pas faire: tester si a l´image d´apres le point sera dans un truc car en cas de faible frame rate le point risque d´etre loin derriere le mur et le personnage pourra passer a travers.

il faut donc resoudre un systeme d´equations permettant de determiner si un vecteur coupe un autre vecteur. plus precisement si la direction coupe un bords du mur.
pour operer ceci il faut projeter les positions extremes sur le vecteur mur a l´aide d´un produit scalaire et tester si la multiplication des resultats est négative.
si oui il y a possibilité de collision, reste a vérifier la position relative en calculant une normale au mur et en testant de la meme maniere si les projections d´un vecteur allant d´un bout du mur a un bout de la direction ont un scalaire positif par rapport a la normale et/ou negatif pour la deuxieme extremité ce qui prouverait ke le vecteur direction coupe le mur.
dans ce cas il faut limiter la taille du vecteur direction de maniere a ce kil ne dépasse pas le mur cela aura pour effet un glissement du personnage.
pour limiter la taille il faut resoudre le systeme disant que la projection du vecteur ( point bout direction - point bout mur) sur la normale au mur est egal a 0. ( donc le produit scalaire est nul) ceci permettrait de coller le point du bout de la direction sur le mur.

bon c peut etre pas super clair tout ca mais si tu te concentres tres bien tu dois pouvoir sortir les idees principales.

Giga-Nova
Giga-Nova
Niveau 9
11 octobre 2003 à 17:45:04

salut

cederavic
cederavic
Niveau 7
12 octobre 2003 à 09:47:46

Je pense avoir compris le truc... Il faut quand même que je relise lol. Merci Lightness :)

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