Созданные ответы форума
Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
-
АвторСообщения
-
Если кто-то всё таки увидит данный пост, то решение нашлось: просто координаты камеры приводить к типу int. Не знаю может это был глюк камеры при использовании float.
C++1camera.setCenter((int)tempX, (int)tempY);Я попробовал данный способ, но ничего не сработало. Как я уже сказал: это дело в картинке! С ДРУГИМИ картинками всё нормально работает. Может нужно как-то обработать картинку… Перепробовал разные способы: сжимал в объёме, сохраняя в PhotoShop как для Web и т.д. Но мне нужны именно эти текстуры. Посоветуйте как обработать изображение, чтобы не было пролагиваний…
Вот реализованный код map.h
C++1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071#pragma once#ifndef MAP_H#define MAP_H#include<SFML\Graphics.hpp>using namespace sf;#define HEIGHT_MAP 15#define WIDTH_MAP 44String TileMap[WIDTH_MAP] = {"00000000000000000000000000000000000000000000","0 0","0 0","0 0","0 0","0 0","0 0","0 0","0 0","0 0","0 0","0 0","0 0","0 0","00000000000000000000000000000000000000000000"};Sprite mapRender[HEIGHT_MAP][WIDTH_MAP];Vector2i mapCoordinate[HEIGHT_MAP][WIDTH_MAP];class Map{public:Texture texture;Sprite sprite;Map(Image &image){image.createMaskFromColor(Color(255, 0, 255));texture.loadFromImage(image);sprite.setTexture(texture);}void render(){for (int i = 0; i < HEIGHT_MAP; i++)for (int j = 0; j < WIDTH_MAP; j++){Vector2i coordinate(j * 32, i * 32);mapCoordinate[i][j] = coordinate;if (TileMap[i][j] == ' ') { sprite.setTextureRect(IntRect(512, 192, 32, 32)); mapRender[i][j] = sprite; }if (TileMap[i][j] == '0') { sprite.setTextureRect(IntRect(384, 96, 32, 32)); mapRender[i][j] = sprite; }}}void draw(RenderWindow &window){for (int i = 0; i < HEIGHT_MAP; i++)for (int j = 0; j < WIDTH_MAP; j++){mapRender[i][j].setPosition(mapCoordinate[i][j].x, mapCoordinate[i][j].y);window.draw(mapRender[i][j]);}}};#endif -
АвторСообщения
Просмотр 3 сообщений - с 1 по 3 (из 3 всего)