Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2473 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Collisions 2D en DirectX 9

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Collisions 2D en DirectX 9

n°1283302
Lord_SoniK
Posté le 13-01-2006 à 20:30:36  profilanswer
 

Bonjour à tous.
Je code un petit shoot them up en 2D sous DirectX 9 et j'ai un problème pour gérer les collisions.
En fait je voudrais gérer les collisions par rapport au pixel, en effet, sur les bords de mes textures de vaisseau se trouvent des pixels transparent et je ne veux pas qu'il soient comptés lors de la détection de collision. Pour cela, j'ai besoin de connaitre la couleur du pixel d'une texture en fonction de ses coordonnées sur cette texture. Et mon problème c'est que je n'arrive pas à trouver comment la récupérer.  
Si quelqu'un pouvait éclairer ma lanterne ...
Merci d'avance ;)

mood
Publicité
Posté le 13-01-2006 à 20:30:36  profilanswer
 

n°1283393
bjone
Insert booze to continue
Posté le 13-01-2006 à 22:40:17  profilanswer
 

il faut pouvoir locker la surface du vaisseau, ce qui te permet de la manipuler...

n°1283394
bjone
Insert booze to continue
Posté le 13-01-2006 à 22:40:24  profilanswer
 

enfin je supposes...

n°1283432
Lord_SoniK
Posté le 13-01-2006 à 23:34:07  profilanswer
 

Ouais ça y a des chances qu'il faille locker la surface. SEulement locker la surface ne donne pas la couleur des pixel. Ou du moins je ne vois pas comment. S'il suffit d'un lock je souhaiterais voir un source qui l'utilise. Merci d'avance ;)

n°1283552
bjone
Insert booze to continue
Posté le 14-01-2006 à 13:11:08  profilanswer
 

bin tu lock, tu connais le format de surface, t'adresses ton pixel...

n°1283562
Lord_SoniK
Posté le 14-01-2006 à 13:58:17  profilanswer
 

Bon voici mon code, qui ne marche pas.
J'ai une ArgumentException sur la ligne 15 et comme détails : {"Must provide at least one rank."}
 

Code :
  1. public static bool test(cSprite p_Sprite1, cSprite p_Sprite2)
  2.         {
  3.             bool bColl = false;
  4.             Rectangle Rect1 = new Rectangle((int)p_Sprite1.fPosX, (int)p_Sprite1.fPosY, (int)p_Sprite1.Image.iWidth, (int)p_Sprite1.Image.iHeight);
  5.             Rectangle Rect2 = new Rectangle((int)p_Sprite2.fPosX, (int)p_Sprite2.fPosY, (int)p_Sprite2.Image.iWidth, (int)p_Sprite2.Image.iHeight);
  6.            
  7.             Rect1.Intersect(Rect2);
  8.             Rectangle RectU = new Rectangle(Rect1.X, Rect1.Y, Rect1.Width, Rect1.Height);
  9.             int[] s1, s2;
  10.             if(!Rect1.IsEmpty)
  11.             {
  12.                 Rect1.X = (int)p_Sprite1.fPosX - RectU.X;
  13.                 Rect1.Y = (int)p_Sprite1.fPosY - RectU.Y;
  14.                 int [] size = {Rect2.Width, Rect2.Height};
  15.                 s1 = (int[])p_Sprite1.Image.Texture.LockRectangle(typeof(int[]), 0, Rect1, LockFlags.ReadOnly);
  16.                 p_Sprite1.Image.Texture.UnlockRectangle(0);
  17.                 Rect2.X = (int)p_Sprite2.fPosX - RectU.X;
  18.                 Rect2.Y = (int)p_Sprite2.fPosY - RectU.Y;
  19.                 s2 = (int[])p_Sprite2.Image.Texture.LockRectangle(typeof(int[]), 0, Rect2, LockFlags.ReadOnly);
  20.                 p_Sprite2.Image.Texture.UnlockRectangle(0);
  21.                 int i = 0, j = 0;
  22.                 while (!bColl && i < s1.GetLength(0))
  23.                 {
  24.                     while (!bColl && j < s2.GetLength(1))
  25.                     {
  26.                         if (s1[j * Rect1.Width + i] != Color.Transparent.ToArgb() && s2[j * Rect1.Width + i] != Color.Transparent.ToArgb())
  27.                             bColl = true;
  28.                         j++;
  29.                     }
  30.                     i++;
  31.                 }
  32.             }
  33.             return bColl;
  34.         }


 
Si quelqu'un comprend ...

n°1283934
Lord_SoniK
Posté le 15-01-2006 à 14:03:17  profilanswer
 

A l'aide ...
 

n°1283963
bjone
Insert booze to continue
Posté le 15-01-2006 à 14:36:33  profilanswer
 

là je peux plus trop t'aider...
tu peux aller voir sur gamedev...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Collisions 2D en DirectX 9

 

Sujets relatifs
DirectX et vbarecherche Programmeur C++/DirectX/OpenGL - Son Of Destiny - RPG 2D/3D
Charger un gros textes dans une surface (DirectX)Dessiner sur une surface directx d'une apllication externe
ou telecharger les anciens sdk de directx?C# et DirectX Managed -- pb de FPS --
problème avec directx 9 et visual c++ 6afficher du texte par dessus un jeu directx
=OSD= Affichage par dessus overlay (fenêtre DirectX / OpenGL)DirectX et C#
Plus de sujets relatifs à : Collisions 2D en DirectX 9


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR