Diskuze: XNA - kolize, kruhové objekty

C# .NET .NET (C# a Visual Basic) XNA - kolize, kruhové objekty American English version English version

Avatar
user
Redaktor
Avatar
user:

Ahoj,
jak na kolize kruhových objektů? Nechci je kontrolovat pomocí Rectanglů...
Pokud je to složitější, stačili by i nějaké zdroje (i v EN), kde bych se dozvěděl více, pokud nějaké znáte...
Děkuji za pomoc

 
Odpovědět 8.8.2012 3:14
Avatar
matesax
Redaktor
Avatar
Odpovídá na user
matesax:

Proč to tu máš 2x? Máš na mysli toto?

http://gamedev.stackexchange.com/…t-all-others

Každopádně stačí google - tam si vyber, co budeš potřebovat...

 
Nahoru Odpovědět 8.8.2012 5:57
Avatar
matesax
Redaktor
Avatar
Odpovídá na user
matesax:
public static Vector2 GetIntersectionDepth(Circle a, Circle b)
   {
       float xValue = a.Center.X - b.Center.X;
       float yValue = a.Center.Y - b.Center.Y;

       Vector2 depth = Vector2.Zero;

       float distance = Vector2.Distance(a.Center, b.Center);

       if (a.Radius + b.Radius > distance)
       {
           float result = (a.Radius + b.Radius) - distance;
           depth.X = (float)Math.Cos(result);
           depth.Y = (float)Math.Sin(result);
       }

       return depth;
   }

   Vector2 depth = Vector2.Zero;

   for (int i = 0; i < bounds.Count; i++)
       for (int j = i+1; j < bounds.Count; j++)
       {
           depth = CircleToCircleIntersection.GetIntersectionDepth(bounds[i], bounds[j]);
           if(depth == Vector2.Zero){
               //this means that did not collide
           }else{
               //this means they collided
           }
       }
 
Nahoru Odpovědět 8.8.2012 5:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.