1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| private void PlayerBlockCollision()
{
foreach (Block blockTemp in blockItem)
{
if (playerRectangle.Intersects(blockTemp.RectangleTexture))
{
//right
if (playerPosition.X > blockTemp.Position.X && playerPosition.Y + playerTexture.Height - speed > blockTemp.Position.Y && playerPosition.Y + speed < blockTemp.Position.Y + blockTemp.Texture.Height)
{
playerPosition.X = blockTemp.Position.X + blockTemp.Texture.Width;
return;
}
//left
if (playerPosition.X < blockTemp.Position.X && playerPosition.Y + playerTexture.Height - speed > blockTemp.Position.Y && playerPosition.Y + speed < blockTemp.Position.Y + blockTemp.Texture.Height)
{
playerPosition.X = blockTemp.Position.X - playerTexture.Width;
return;
}
//top
if (playerPosition.Y < blockTemp.Position.Y && playerPosition.X + speed < blockTemp.Position.X + blockTemp.Texture.Width && playerPosition.X + playerTexture.Width - speed > blockTemp.Position.X)
{
playerPosition.Y = blockTemp.Position.Y - playerTexture.Height;
return;
}
//down
if (playerPosition.Y > blockTemp.Position.Y && playerPosition.X + speed < blockTemp.Position.X + blockTemp.Texture.Width && playerPosition.X + playerTexture.Width - speed > blockTemp.Position.X)
{
playerPosition.Y = blockTemp.Position.Y + blockTemp.Texture.Height;
return;
}
}
} |