SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Лаги на карте
В этой теме 8 ответов, 4 участника, последнее обновление BiJey 7 года/лет, 9 мес. назад.
-
АвторСообщения
-
Появилась проблема. Когда я просто передвигаюсь персонажем по карте, то иногда появляются вот такие зелёные полосы: жмяк.
Карта хранится в map.h. Вот код:
C++1234567891011121314151617181920212223242526272829303132333435#include <SFML\Graphics.hpp>const int MAP_HEIGHT = 26;const int MAP_WIDTH = 40;sf::String TileMap[MAP_HEIGHT] ={"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B B","B BBBBBBBB B","B B","B ---- BBBBBBBB","B B","B B","B B","B B","BBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBB","DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD",};И прорисовка карты в main.cpp:
C++123456789101112for (int i = 0; i < MAP_HEIGHT; i++)for (int j = 0; j < MAP_WIDTH; j++){if (TileMap[i][j] == ' ') continue;if (TileMap[i][j] == 'B') map_s.setTextureRect(IntRect(32,0,32,32));if (TileMap[i][j] == '-') map_s.setTextureRect(IntRect(0,0,32,32));if (TileMap[i][j] == 'D') continue;map_s.setPosition(j * 32, i * 32);window.draw(map_s);}Может быть кто-нибудь знает как решить эту проблему?
А, и заодно подскажите, пожалуйста, можно ли сделать так, чтобы спрайт вплотную касался стен и пола (без белого пространства между персонажем и стеной) без поиска нужных координат для прорисовки спрайта. Может надо как-нибудь спрайт центрировать, или ещё что?
взаимодействие со стенами поправь
в 11 уроке все написано
а если хочешь чтоб помогли кинь код взаимодействиясмотри урок взаимодействия с картой, это примерно 11 – ый. а насчет зеленых полос – у тебя возможно тайл размером шириной 31, а ты рисуешь ширину 32 – отсюда такая ерунда. или наоборот. короче – не соответствие по ширине есть.
вобще у тебя стена слева меньше чем пол. тайлы должны быть квадратными. а то что у тебя пустота между персонажем и полом – может ты рисуешь персонажа по высоте больше, чем он есть на самом деле?
>вобще у тебя стена слева меньше чем пол
камера просто была смещена.>а насчет зеленых полос – у тебя возможно тайл размером шириной 31, а ты рисуешь ширину 32 – отсюда такая ерунда. или наоборот. короче – не соответствие по ширине есть.
Всё перепроверил много раз. Вот скрин: жмяк, и прикрепил map.png к сообщению.Со спрайтом персонажа разобрался, правда, только когда головой касается чего-либо то пространство есть, но маленькое, не так критично. Спасибо.
Вложения:
You must be logged in to view attached files.Чтобы сказать “спасибо”, следует использовать соответствующую кнопку вверху поста – “Сказать спасибо” (там еще большой палец). Это распространенная практика на всех форумах
Простите за оффтоп.
После того, как сделал гравитацию из 20-ого урока эти лаги пропали. Скорее всего, они происходили из-за функции ineractionWithMap() из урока 11.
Может там были проблемы с setorigin и setposition. так проблемы решены?
Да.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.