GM 5.2: неДоделаем камеру
неДоработаю управление камерой и добавлю-таки свайп экрана.
Для тех кто не понимает что происходит ниже ссылка на первую статью из цикла.
О нажатиях клавиш в Game Maker
В гамаке предусмотрены три внутренние функции событий для кнопок с устройств: событие нажатия, удержания и отпускания кнопки. Первое и последнее срабатывают лишь раз в соответствующие моменты, а событие удержания действует каждый шаг (или кадр) , пока кнопка нажата.
Логика алгоритма для свайпа
В момент зажатия левой кнопки мыши (или ЛКМ) мы запоминаем стартовые значения для курсора и отслеживаемого экраном объекта зона. Затем в каждый момент удержания отслеживаем разницу текущих координат курсора с изначальными и присваиваем ее зоне относительно уже ее стартовых значений.
Алгоритм работает корректно, но происходит тряска экрана. Для выявления ошибки я задала скорость движения камеры за отслеживающимся объектом на минимум и обнаружила, что при нажатии ЛКМ зона мгновенно перемещается в позицию курсора и оттуда движется в начальную точку.
Я отключала строчки кода одна за другой, но получала странный эффект. При зажатии ЛКМ зона почему-то двигалась в сторону курсора на небольшое расстояние и оставалась там, не реагируя на перемещение указателя мыши. При отпускании ЛКМ, зона возвращалась на изначальную позицию, хотя все функции работы с клавишами были отключены (точнее строчки кода временно превращены в комментарии до устранения проблемы).
Тогда я стала отключать вообще все, пока не обнаружила, что на это влияют события скроллинга колесика мыши.
Это решило проблему телепорта зоны, но тряска сохранилась. Чтобы понять причину тряски, вывела на экран координаты, которые зона должна принять и ее текущие значения, а еще замедлила скорость игры (с 30 шагов-кадров до 5).
В общем, пока зона переместится в нужные координаты, камера движется вместе с ней и положение курсора также смещается в пространстве (ведь он неподвижен не относительно координат комнаты, а относительно вида на экране) причем в обратном направлении, тем самым вынуждая зону откатиться назад и так попасть в замкнутый цикл тряски. Этого я не ожидала, хотя это логично.
Так... надо падумав типерь как енто решать.