SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › неправильное отображение тайла
В этой теме 4 ответа, 2 участника, последнее обновление Dench 7 года/лет, 10 мес. назад.
Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
-
АвторСообщения
-
при добавлении на карту колодца, он появляется на черном фоне. CreateMasckColor не работает. Так же не получается убрать тень у персонажа.
C++12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061Player(String F, float X, float Y, float W, float H)//Конструктор с параметрами(формальными) для класса Player. При создании объекта класса мы будем задавать имя файла, координату Х и У, ширину и высоту{dx = 0; dy = 0; speed = 0; dir = 0;file = F;//имя файла + расширениеw = W; h = H;//высота и ширинаimage.loadFromFile("images/" + file);//запихиваем в image наше изображение вместо File мы передадим то, что пропишем при создании объекта. В нашем случае "hero.png" и получится запись идентичная image.loadFromFile("images/hero/png");image.createMaskFromColor(Color(103,103,103));texture.loadFromImage(image);//закидываем наше изображение в текстуруsprite.setTexture(texture);//заливаем спрайт текстуройx = X; y = Y;//координата появления спрайтаsprite.setTextureRect(IntRect(0, 0, w, h)); //Задаем спрайту один прямоугольник для вывода одного льва, а не кучи львов сразу. IntRect - приведение типов}void update(float time) //функция "оживления" объекта класса. update - обновление. принимает в себя время SFML , вследствие чего работает бесконечно, давая персонажу движение.{switch (dir)//реализуем поведение в зависимости от направления. (каждая цифра соответствует направлению){case 0: dx = speed; dy = 0; break;//по иксу задаем положительную скорость, по игреку зануляем. получаем, что персонаж идет только вправоcase 1: dx = -speed; dy = 0; break;//по иксу задаем отрицательную скорость, по игреку зануляем. получается, что персонаж идет только влевоcase 2: dx = 0; dy = speed; break;//по иксу задаем нулевое значение, по игреку положительное. получается, что персонаж идет только внизcase 3: dx = 0; dy = -speed; break;//по иксу задаем нулевое значение, по игреку отрицательное. получается, что персонаж идет только вверх}x += dx*time;//то движение из прошлого урока. наше ускорение на время получаем смещение координат и как следствие движениеy += dy*time;//аналогично по игрекуspeed = 0;//зануляем скорость, чтобы персонаж остановился.sprite.setPosition(x, y); //выводим спрайт в позицию x y , посередине. бесконечно выводим в этой функции, иначе бы наш спрайт стоял на месте.}};int main(){RenderWindow window(VideoMode(700,450), "game");/*создает обьект window - окно приложения.так же,после заголовка "game", можно задать различные параметры окна.например : Style::Fullscreen сделает окно развернутым во весь экран.*//*Image heroImage;//создаем обьект 'изображение'heroImage.loadFromFile("images/Human_HF1_Male_24.png");//загружаем изображение в обьект ImageTexture heroTexture; //создаем обьект 'текстура'heroTexture.loadFromImage(heroImage);//передаем в него обьект изображение.Sprite herosprite;//создаем обьект 'спрайт'herosprite.setTexture(heroTexture);//Передаем в него обьект текстураherosprite.setTextureRect(IntRect(0, 0, 70, 85));//таким образом выводим прямоугольникherosprite.setPosition(100, 100);//задаем спрайту начальную позицию// слово set переводится как "задавать"*/Player p("Human_HF1_Male_24.png", 200, 200, 70.0, 85.0);Image map_image;map_image.loadFromFile("images/map.png");map_image.createMaskFromColor(Color(0, 0, 0));Texture map;map.loadFromImage(map_image);Sprite s_map;s_map.setTexture(map);скрин
Вложения:
You must be logged in to view attached files.Картинку с колодцем в студию!
У вас не чисто чорный а чорный с полутонами то есть не 0.0.0 а 1.2.4, 0.2.1 . Короче прост в ручную перекрась пространство вокруг колодца.
я просто залил все коричневым,под цвет земли под травой, и все отлично
-
АвторСообщения
Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
Для ответа в этой теме необходимо авторизоваться.