Ответ в теме: Пролагивают спрайты

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Пролагивают спрайты Ответ в теме: Пролагивают спрайты

#2621

Denisson
Участник
Сообщений:7

Зарегистрирован:
31.12.2015

Репутация:1

кусок отрисовки в цикле игры

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;
}