Созданные ответы форума
-
АвторСообщения
-
Проблема решена, с помощью загрузки спрайтов всех элементов карты из отдельных png
Потыкался… Если ставить 49 или 51, то появляются черные полосы.
Я что-то недопонимаю… Скиньте исправленный код. Если я ставлю с 51, то перед каждым спрайтом белая полоса
Сразу не нашел кнопку для оформления кода… Первый кадр у меня идет от 0 до 49, да и как я понял дело не в самих спрайтах, а именно в коде или самой библиотеке.
Тем не менее, есть идеи?
кусок отрисовки в цикле игры
h.update(time);
window.clear();
window.setView(view1);
// рисуем карту
for (int i = 0; i < HEIGHT_MAP; i++)
for (int j = 0; j < WIDTH_MAP; j++)
{
if (TileMap[i][j] == ‘ ‘) s_map.setTextureRect(IntRect(0, 0, 50, 50));
if (TileMap[i][j] == ‘s’ || TileMap[i][j] == ‘0’) s_map.setTextureRect(IntRect(50, 0, 50, 50));
if (TileMap[i][j] == ‘t’) s_map.setTextureRect(IntRect(50*2, 0, 50, 50));
if (TileMap[i][j] == ‘k’) s_map.setTextureRect(IntRect(50*3, 0, 50, 50));
s_map.setPosition(j * 50, i * 50);
window.draw(s_map);
}
//игровые элементы
for (int i = 0; i < box_k; i++)
window.draw(box[i].sprite);
for (int i = 0; i < h.bullet_k; i++)
window.draw(h.bullet[i].sprite);
for (int i = 0; i < enemy_k; i++)
window.draw(enemy[i].sprite1);
//
window.draw(h.sprite1); // спрайт героя
// игровой интерфейс (сверху слева)
cursor_sprite.setPosition(window.mapPixelToCoords(Mouse::getPosition(window)).x, window.mapPixelToCoords(Mouse::getPosition(window)).y);
text.setString(inttostr(h.ammo_k) + ‘/’);
text.setPosition(view1.getCenter().x-375, view1.getCenter().y-250);
icon_pistolet.setPosition(view1.getCenter().x-300, view1.getCenter().y-227);
icon_pistolet.rotate(0.18);
hp_bar_sprite.setPosition(view1.getCenter().x-400, view1.getCenter().y-290);
window.draw(hp_bar_sprite);
window.draw(icon_pistolet);
window.draw(text);
window.draw(cursor_sprite);
//
window.display();ниже h.update();
void setPosition(db x1, db y1)
{
view1.setCenter(x1, y1);
x = x1;
y = y1;
sprite1.setPosition(x1, y1);
}
void update(db time)
{
if (dx == 0 || dy == 0)
setPosition(x + dx * time, y + dy * time);
else
setPosition(x + time * dx / sqrt(2), y + time * dy / sqrt(2));
dx = 0; dy = 0;
}Причем это происходит не с одним конкретным местом, а во время движения камеры с разными спрайтами… Попробовал поизменять размер окна – ничего не дало. Размер спрайтов 50×50, окна на скрине 640×480
-
АвторСообщения