Spel! Fastnat på fysiken.
if (IntersectPixel(carRectangle, carTextureData, treeRectangle, treeTextureData))
{
//Remove one life
heartPosition = new Vector2(-1000, -1000);
return;
}
if (IntersectPixel(carRectangle, carTextureData, treeRectangle, treeTextureData))
{
//Crash again, one more life is removed
heartPositionTwo = new Vector2(-1000, -1000);
}
base.Update(gameTime);
}
//Collision class
static bool IntersectPixel(Rectangle rectangleA, Color[] dataA, Rectangle rectangleB, Color[] dataB)
{
//Find peices of rectangles that is overscreeding
int top = Math.Max(rectangleA.Top, rectangleB.Top);
int bottom = Math.Min(rectangleA.Bottom, rectangleB.Bottom);
int left = Math.Max(rectangleA.Left, rectangleB.Left);
int right = Math.Min(rectangleA.Right, rectangleB.Right);
//Checking every pixel for collision
for (int y = top; y < bottom; y++)
{
for (int x = left; x < right; x++)
{
Color colorA = dataA[(x - rectangleA.Left) + (y - rectangleA.Top) * rectangleA.Width];
Color colorB = dataB[(x - rectangleB.Left) + (y - rectangleB.Top) * rectangleB.Width];
//Check if they match
//If so, they are colliding
if (colorA.A != 0 && colorB.A != 0)
{
return true;
}
}
}
return false;
}
En kollision sker. En Sprite försvinner som symboliserar ett "liv" i spelet. Men när jag sedan kolliderar igen så försvinner inte Sprite nr2 (Andra livet).
Förstår inte riktigt varför. Tar jag bort return; från första så försvinner båda liven, men på samma gång.
tacksam för hjälp!
Jaaa men just precis.