Проблема с моей 2d псевдо-камерой (MonoGame)

49
16 октября 2018, 09:00

Я только - только начинаю изучать MonoGame. Ради обучения, решил пока написать простую игрушку с изменяемым игровым миром (что - то вроде Terraria). Так вот, есть у меня двумерный массив мира(int[1000,1000]). Камера берёт какой - то небольшой кусок из этого массива и "кладёт" его в массив тех блоков, которые нужно нарисовать (int[140,140]). При движении камеры, чтобы возникала иллюзия движения, все блоки рисуются с небольшим отступом относительно позиции игрока. Вот код рисования блока

spriteBatch.Draw(texture, new Rectangle(((i - 10) * 10) + fractionalpartXint, ((j - 10) * 10) + fractionalpartYint, 10, 10), Color.White);

К позиции по x и y прибавляются ещё две переменные: fractionalpartXint и fractionalpartYint соответственно. Эти две переменных - это просто первое число после запятой позиции игрока. Например, у игрока такие координаты: (10.3 ; 4,5) - это значит, что отступ по x - 3, по y - 5.

Проблема заключается в том, что если координаты камеры меньше 100, то все движения блоков плавные, всё хорошо, но если же больше 100, то их движения становятся дёрганными, резкими. При движении вбок, блоки движутся то вправо, то влево. Причём при отдалении от этого рубежа 100, характер движения блоков не изменяется. Ещё, для понятности. Изменил начальную позицию камеры на (500;10). Движение по x - дёрганное, по y - плавное. Стоит переместится на координаты (500;120), как и по y тоже начинаются такие лаги.

У кого какие идеи на этот счёт?

READ ALSO
Сохранение больших объемов данных в базу данных используя entity framework

Сохранение больших объемов данных в базу данных используя entity framework

Программа парсит через VK API пользователей (в среднем в 20-50 потоков) и создает записи в базе данныхУ каждого пользователя в среднем 20 групп,...

32
Почему разнятся значения Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) в разных приложениях?

Почему разнятся значения Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) в разных приложениях?

Я пишу сервис, где мне необходимо получить папку AppData\RoamingПользуюсь следующей конструкцией Environment

51
Вставить текст в документ libreoffice writer с помощью C#

Вставить текст в документ libreoffice writer с помощью C#

Каким образом с помощью C# можно вставлять текст на поля (placeholder) в документ libreoffice writer? Где можно найти руководство? К сожалению, информацию...

28
wpf datagrid view раскрытие в дерево

wpf datagrid view раскрытие в дерево

надо сделать возможность развернуть в виде дерева, как на скрине

19