Where should I place my reaction code in Per-Pixel Collision Detection?
- by CJ Cohorst
I have this collision detection code:
public bool PerPixelCollision(Player player, Game1 dog)
{
Matrix atob = player.Transform * Matrix.Invert(dog.Transform);
Vector2 stepX = Vector2.TransformNormal(Vector2.UnitX, atob);
Vector2 stepY = Vector2.TransformNormal(Vector2.UnitY, atob);
Vector2 iBPos = Vector2.Transform(Vector2.Zero, atob);
for(int deltax = 0; deltax < player.playerTexture.Width; deltax++)
{
Vector2 bpos = iBPos;
for (int deltay = 0; deltay < player.playerTexture.Height; deltay++)
{
int bx = (int)bpos.X;
int by = (int)bpos.Y;
if (bx >= 0 && bx < dog.dogTexture.Width && by >= 0 && by < dog.dogTexture.Height)
{
if (player.TextureData[deltax + deltay * player.playerTexture.Width].A > 150 && dog.TextureData[bx + by * dog.Texture.Width].A > 150)
{
return true;
}
}
bpos += stepY;
}
iBPos += stepX;
}
return false;
}
What I want to know is where to put in the code where something happens. For example, I want to put in player.playerPosition.X -= 200 just as a test, but I don't know where to put it. I tried putting it under the return true and above it, but under it, it said unreachable code, and above it nothing happened. I also tried putting it by bpos += stepY; but that didn't work either. Where do I put the code?