SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Ошибка вывода персонажа на карту.
В этой теме 13 ответов, 3 участника, последнее обновление Павел Букреев 8 года/лет, 10 мес. назад.
-
АвторСообщения
-
Добрый день, форумчане!
У меня была проблема с 8 уроком – не мог инициализировать переменную в класе – сделал в конструкторе – получилось!
Но теперь такая фигня – спрайт персонажа не выводится…интересно то, что я писал код из 9 урока(+ карта) и спрайт карты работает!!!
Тоисть спрайт персонажа не выводит, спрайт карты – выводит!
Подскажите, что мне делать…спасибо =)
может ты рисуешь карту поверх персонажа? попробуй рисование местами поменять
Тоисть? Как именно?
Извините, я просто еще с++ а именно в SFML не бум бум))
{
if (TileMap[i][j] == ‘ ‘) s_map.setTextureRect(IntRect(0, 0, 32, 32));
if (TileMap[i][j] == ‘s’) s_map.setTextureRect(IntRect(32, 0, 32, 32));
if ((TileMap[i][j] == ‘0’)) s_map.setTextureRect(IntRect(64, 0, 32, 32));s_map.setPosition(j * 32, i * 32);
window.draw(p.sprite);
window.draw(s_map);}
писал так – не получается…
window.draw (персонаж.спрайт);
window.draw (карта.спрайт);
в зависимости от того, какая из строк выше происходит наложение слоёв.
ещё одна причина – посмотри координаты появления персонажа х и у в самом начале при появлении персонажа
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, 32, 32));
if (TileMap[i][j] == ‘s’) s_map.setTextureRect(IntRect(32, 0, 32, 32));
if ((TileMap[i][j] == ‘0’)) s_map.setTextureRect(IntRect(64, 0, 32, 32));s_map.setPosition(j * 32, i * 32);
}
window.draw(p.sprite);
window.draw(s_map);
window.display();
}return 0;
}перенес всё так – не видит ни карты, ни персонажа…
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, 32, 32));
if (TileMap[i][j] == ‘s’) s_map.setTextureRect(IntRect(32, 0, 32, 32));
if ((TileMap[i][j] == ‘0’)) s_map.setTextureRect(IntRect(64, 0, 32, 32));s_map.setPosition(j * 32, i * 32);
window.draw(p.sprite);
window.draw(s_map);}
window.display();
}return 0;
}зделал так – видно только карту…HELP…SOS…HELP
координаты появления заданы? x и y персонажа, в конструкторе при создании мы их задавали.
и рисование draw карты и игрока как в уроке сделай (я про последовательность)
Я ПРОСТО взял и скопировал код с урока, у меня всё так же как и в уроке…(кроме иницилизации dir и speed)
не пашет…
sprite.setTextureRect(IntRect(0, 0, w, h));
обьясните, что значит эта строка?
спрайт.одетьТекстуруПрямоугольник(ЦелочисленныйВектор4(ЛеваяКоордината, ВерхняяКоордината, Ширина, Высота)); // Идёт счёт по пикселям на текстуре
C++1sprite.setTextureRect(IntRect(0, 0, w, h));скинь свой проект , попробуем запустить.
по поводу вопроса: задаешь спрайту прямоугольник в скобках приведение типов в целочисленное. 0, и 0 это левый верхний угол картинки, w и h вправо и вниз от этого левого верхнего угла.
посмотри последние сообщения здесь:
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.