private void CheckPlatform(Map gameMap) { Vector2 checkPos; // Left if (Speed.X < 0) { checkPos.X = collRect.Left - (Map.TILE_WIDTH/2); checkPos.Y = collRect.Bottom + (Map.TILE_HEIGHT / 2); if (gameMap.GetTileAt(checkPos) == 0) { faceDir = 1; } } // Right if (Speed.X > 0) { checkPos.X = collRect.Right + (Map.TILE_WIDTH/2); checkPos.Y = collRect.Bottom + (Map.TILE_HEIGHT / 2); if (gameMap.GetTileAt(checkPos) == 0) { faceDir = -1; } } }
private void CheckCollisions(Map gameMap) { Vector2 checkPos; // First, check collsions downwards if (Speed.Y > 0) { checkPos.Y = collRect.Bottom + Speed.Y; for (checkPos.X = collRect.Left + 4; checkPos.X <= collRect.Right - 4; checkPos.X += collRect.Width / 8) if (gameMap.GetTileAt(checkPos) > 0) { Speed.Y = 0; } } // Up if (Speed.Y < 0) { checkPos.Y = collRect.Top + Speed.Y; for (checkPos.X = collRect.Left + 4; checkPos.X <= collRect.Right - 4; checkPos.X += collRect.Width / 8) if (gameMap.GetTileAt(checkPos) > 0) { Speed.Y = 0; } } // Left if (Speed.X < 0) { checkPos.X = collRect.Left + Speed.X; for (checkPos.Y = collRect.Top + 4; checkPos.Y <= collRect.Bottom - 4; checkPos.Y += collRect.Height / 8) if (gameMap.GetTileAt(checkPos) > 0) { Speed.X = 0; faceDir = 1; } } // Right if (Speed.X > 0) { checkPos.X = collRect.Right + Speed.X; for (checkPos.Y = collRect.Top + 4; checkPos.Y <= collRect.Bottom - 4; checkPos.Y += collRect.Height / 8) if (gameMap.GetTileAt(checkPos) > 0) { Speed.X = 0; faceDir = -1; } } }