begin process at 2012 05 29 00:27:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

DirectX

 > 

les collisions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

les collisions

lundi 18 septembre 2006 à 18:28:43 | les collisions

StrikerFred

bonjour !
bon maintenant que je sais créer des vertices (sans textures pour le moment) et me déplacer, j'aimerais mettre des collisions

alors vous allez me dire que y'a déjà plein de sujets. Mais j'aimerais savoir comment faire des collisions SIMPLES avec les carrés que je fais en vertices, y'a pas de personnages devant la caméra, faut juste que on traverse pas les carrés ! lol ils sont fait avec une simple structure:
struct VERTEX
{
     FLOAT x,y,z;
     DWORD color;
};
et en voilà deux images:


j'ai tout à fait compris l'algo mais je sais pas comment tester ces collisions POUR DES SIMPLES VERTICES (et pas pour des objets):
[CODE]
Pour tous les murs présents
si mur.Collision(personnage) == true
{
    alors le personnage ne peut pas avancer.
    quit
}
Aucun obstacle, le personnage peut avancer.
[/CODE]

donc si on pouvait me donner un tutorial TRES simple (en francais svp) ou mieux, m'expliquer sur le forum? (oui j'en demande beaucoup...)
ca pourra, je l'espère me faire une intro pour les collisions "normales"

voilà! merci d'avance ! 
a+ !
lundi 18 septembre 2006 à 18:37:24 | Re : les collisions

luhtor

T'as quel niveau de maths ?


lundi 18 septembre 2006 à 18:42:05 | Re : les collisions

laurent1024

Membre Club
Avec tes points tu peux calculer une equation de plan.Avec cette eqution de plan tu peut voir s'il va avoir une collision.
Equation de plan ax + by +cz = 0
Position du perso P (xp, yP, zP)
Position du perso apres déplacement Q (xQ, yQ, zQ).
si a * xP + b* yP + c * zP est du meme signe que a * xQ + b* yQ + c * zQ pas de collision
sinon collision
Faut aussi prendre en compte a position du point pour savoir s'il y est en face des 4 points qui définisse le rectangle.

++


lundi 18 septembre 2006 à 20:31:38 | Re : les collisions

StrikerFred

ne rigolez pas, j'entre en seconde ^^
mais je suis logique et je suis pret à apprendre (pour les besoin de la programmation) toutes les règles qu'il faudra ^^

ca a l'air interressant l'équation de plan mais j'ai pas tout compris
ou interviennent les points de mes carrés de vertex ? fait-on l'équation pour chaque carré, chaque droites (chaque points ?) ?
la en l'occurence j'ai 12 instance de la structure vertex (1 triangle = 3points, mes carrés sont fait de 2 triangles.. lol)

moi on m'avait dit de faire une bounding box et des évalutations :
if(xminPerso > xmaxMur) then pas de collision
if(xmaxPerso < xminMur) then pas de collision
etc....etc....

mais je sais pas... ton évaluation de plan a l'air cool

bon, merci d'avance !!!

a+
lundi 18 septembre 2006 à 20:59:25 | Re : les collisions

luhtor

Arf oue seconde. Avec des produits scalaire ca se fait très facilement, mais tu devras attendre quelques années. (plusieurs meme).
Tu as besoin de gérer des grandes map ? Car sinon, tu créés un tableau 2D (1d en fait, mais que tu vois à 2 dimension), donc c'est une sorte de damier. Si la case est noir, ca veut dire que ya un obstacle, si elle est blanche le joueur peu avancer. Tu remplis ce damier à partir de la liste des murs que tu as. Le pb est que si tu veux que le joueur glisse le long du mur, ca risque d'etre un peu chiant.


lundi 18 septembre 2006 à 21:20:24 | Re : les collisions

StrikerFred

mais faut m'expliquer le produit scalaire ! je veux bien apprendre
ben je demenderai à mes ainés, ils m'expliqueront

bon, pour le système de damier (les tuiles en langage 2d non?) je connais et je pense que c'est pas ce que je veux, oui oui je veux des vrais collisions, je veux faire un vrai jeu (complet, vendu des millions, je suis riiiiche ! non je rigole)

vous me prennez pas au sérieux, mais c'est pas un petit passe-temps, je veux en faire mon métier plus tard! j'ai appris différents langages, je me lance dans la 3d, autant que j'apprenne ces règles de math maintenant ! lol
je sais que dans les math de haut niveau, y'a des trucs assez abstrait (le nombre i non? je dis ptètre que des bobards) mais j'ai l'esprit ouvert  ! heum... bon

voilà donc produit scalaire ou se que tu veux, je suis pret à apprendre ! (et a y passer du temps aussi)

a+ et merci d'avance !
lundi 18 septembre 2006 à 21:49:52 | Re : les collisions

luhtor

"ces règles de math maintenant". <= oui mais c'est bien ca le pb. C'est pas des règles de maths qu'il faudrait que tu apprennes, c'est les maths tout court. Et c'est pas le lycée qui te l'apprendra. Donc j'ai bien peur qu'il te faille être partient.

Le nombre "i", c'est que de la "gueule" ca. Ya rien de compliqué derriere, mais pour la 3D, ca sert a rien.

En bref, faut au moins que t'attende une année pour avoir une introduction aux vecteurs, sauf si tu as qqn pour t'aider, mais auquel cas tu n'aurais pas posté ici. (tout ca, n'est que mon avis personnel)
mardi 19 septembre 2006 à 07:26:18 | Re : les collisions

StrikerFred

aha.... ben je veux bien apprendre les "maths tout court" aussi ! et puis, j'ai quelqu'un qui peut m'aider, mais que en math! il connait strictement rien en programmation donc ne pourrais tu pas me dire la facon de détecter les collisions avec les produits scalaires ? sinon je te dis que j'ai le niveau de math de 3ans après le bac et voilà ^^

non sérieusement, je veux savoir ! je suis convaincu que c'est pas si compliqué que ca

 

mardi 19 septembre 2006 à 13:18:59 | Re : les collisions

luhtor

Hypothèses: Tous tes murs sont de dimensions identiques et situés à la meme altitude. Avec ca, c'est relativement simple.
Donc on peut voir tes murs comme des segments sur un plan. Pour chaque mur, on définie un rectangle 3D englobant si le joueur rentre dans ce rectangle, alors il doit etre repoussé.

Pour chaque mur, faut calculer le vecteur normal, le vecteur tangentielle (direction des segments) et le centre des segments.
Evidemment, tous les vecteurs doivent etre normalisés. (longueur 1)

Faut apres te donner une distance minimale a partir de laquelle le joueur doit etre bloqué (epsilon).
Soit O le centre d'un mur et M la position du joueur.
Soit N le vecteur normal au mur et T le vecteur tangentielle.

Le produit scalaire de OM par N te donne la distance entre le joueur et la face du mur et OM scalaire T donne la projection du joueur sur le mur.
Donc en gros:
le joueur touche le mur si :
(valeur absolue de (OM scalaire N) < epsilon)  ET  (valeur absolue de (OM scalaire  T) < epsilon + demi longueur d'un mur).

Lorsque le joueur touche le mur, suivant le coté ou il touche, il faut supprimer une composante de la vitesse pour pas qu'il passe a travers.

Donc demande a tes connaissances pour t'expliquer le produit scalaire, le calcul du vecteur normal et tangentielle.



mardi 19 septembre 2006 à 18:46:25 | Re : les collisions

StrikerFred

oua super! merci pour la réponse, je vais demander et ensuite je pense que je comprendrai ! si jamais, je poserai d'autres questions ^^

bon, d'un point de vue plus "directx", on passe tous les murs dans une boucle et on vérifie ca? la composante de la vitesse qu'il faut enlever, comment on la connait? si j'ai compris, si le joueur allait tout droit, (que du z) on supprimerai l'évolution en z et s'il avancait que avec du x (je sais pas si c'est compréhensible) on supprime "l'évolution" en x non?

mais si y'a un peu de x et de z, comment fait-on ? (je veux que le joueur glisse sur les murs)

merci! a+

1 2

Cette discussion est classée dans : collisions, personnage, vertices, carrés, simples


Répondre à ce message

Sujets en rapport avec ce message

Interaction camera <-> collisions [ par DarkBoss ] Hellowww,alors voila je me demandais tout bêtement, on parle beaucoup de comment detecter les collisions, mais pas beaucoup de comment gérer les colli S'il vous plait Aidez moi!!!!!!!!! [ par starbluesky ] SalutPouvez vous me dire comment utilisez la memoire virtuelle pour allouez d'espace pour une matrice de taille 250000 * 500 ?j'ai utilise dans mon pr Constructeur et polymorphisme [ par Guiiil ] Bonjour à tous, Je suis en train de réaliser un p'tit jeu de rôle pour me faire la main (et une PTI au passage, les BTS IG comprendront), et je bloque Séparation et organisation [ par LeSac ] Bonjour. j'aimerai separé un petit debut de jeu en plusieurs fichiers simple a lire. Je manque d'organisation et aussi de comprehension de l'utilisat Coloration de graphes [ par marwa5 ] Bonsoir Je fais ma mémoire de recherche concernant le problème de coloration de graphe. Pour se faire, j'utilise l'algorithme gnétique, mais je me su Quelques questions simples [ par ajdev33 ] Bon dans les catégories qu'est ce que API et sinon comment fait on pour savoir si sa source appartient plutot au niveau 1, 2, ou 3.Merci d'avance je voudrais afficher les résultats de mon programme dans des carrés [ par arconius ] Voila à l'aide de conio.h je dessine en ascii des carré, puis je voudrais avoir les résultats que mon programme affiche dans ces carrés.Mon problème e Moteur 3D, gestion des collisions [ par fabienGL ] Bonjour, je vous écris car j'ai 2 question :1)OpenGL c'est une librairies graphiques, pourtant entends-t-on parler de moteurs 3D j'aurais aimé savoir help : collisions particules en OpenGL [ par kx2k3 ] je suis en train de plancher sur des particules en ce moment, en openGLje voudrais les faire rebondir sur un plantous les exemples que j'ai trouvés le tableaux & collisions [ par JediMaster ] j'utilile directdraw avec la technique du blitting (les pixels d'une certaine couleur sont pas collé sur la surface et donc cela crée la tranparence)j


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales