Система передвижения
Настало время научиться ходить. Казалось бы, ничего сложного, но я умудрился накосячить: изначально для хранения информации о координатах игровых объектов я использовал дополнительную сущность – карту сцены. Это что-то вроде матрицы, где каждая ячейка представляет собой точку с координатами x и y, а в качестве значения этой ячейки – список игровых объектов, которые там находятся.
Так вот, для перемещения игрового объекта, я считал расстояние на которое надо его передвинуть и размещал по новым координатам. Забывая очистить предыдущую ячейку. Это приводило к множественному клонированию персонажа на сцене, а в качестве побочного эффекта – к проблемам расчета расстояния. В результате, петух улетал в космос, оставляя за собой забавный шлейф стоило только начать бежать.
В конце концов, я решил избавиться от этой карты и начал хранить координаты игровых объектов в них самих (а точнее в отдельном компоненте если говорить терминами ECS паттерна).