GM 5.2: неДоделаем камеру

неДоработаю управление камерой и добавлю-таки свайп экрана.

Для тех кто не понимает что происходит ниже ссылка на первую статью из цикла.

О нажатиях клавиш в Game Maker

В гамаке предусмотрены три внутренние функции событий для кнопок с устройств: событие нажатия, удержания и отпускания кнопки. Первое и последнее срабатывают лишь раз в соответствующие моменты, а событие удержания действует каждый шаг (или кадр) , пока кнопка нажата.

Логика алгоритма для свайпа

На схеме все выглядит просто.
На схеме все выглядит просто.

В момент зажатия левой кнопки мыши (или ЛКМ) мы запоминаем стартовые значения для курсора и отслеживаемого экраном объекта зона. Затем в каждый момент удержания отслеживаем разницу текущих координат курсора с изначальными и присваиваем ее зоне относительно уже ее стартовых значений.

Да не трясись ты!

Алгоритм работает корректно, но происходит тряска экрана. Для выявления ошибки я задала скорость движения камеры за отслеживающимся объектом на минимум и обнаружила, что при нажатии ЛКМ зона мгновенно перемещается в позицию курсора и оттуда движется в начальную точку.

Я отключала строчки кода одна за другой, но получала странный эффект. При зажатии ЛКМ зона почему-то двигалась в сторону курсора на небольшое расстояние и оставалась там, не реагируя на перемещение указателя мыши. При отпускании ЛКМ, зона возвращалась на изначальную позицию, хотя все функции работы с клавишами были отключены (точнее строчки кода временно превращены в комментарии до устранения проблемы).

Действительно, аномалия...

Тогда я стала отключать вообще все, пока не обнаружила, что на это влияют события скроллинга колесика мыши.

Всему виной как всегда тупич и невнимательность. Это ж надо было указать в качестве начальных координат <b>зоны</b> позицию курсора?
Всему виной как всегда тупич и невнимательность. Это ж надо было указать в качестве начальных координат зоны позицию курсора?

Это решило проблему телепорта зоны, но тряска сохранилась. Чтобы понять причину тряски, вывела на экран координаты, которые зона должна принять и ее текущие значения, а еще замедлила скорость игры (с 30 шагов-кадров до 5).

Теперь все стало ясно... наверное.

В общем, пока зона переместится в нужные координаты, камера движется вместе с ней и положение курсора также смещается в пространстве (ведь он неподвижен не относительно координат комнаты, а относительно вида на экране) причем в обратном направлении, тем самым вынуждая зону откатиться назад и так попасть в замкнутый цикл тряски. Этого я не ожидала, хотя это логично.

Так... надо падумав типерь как енто решать.

Я красивые графички просто так что ле рисовала!?
Я красивые графички просто так что ле рисовала!?
3K3K показов
156156 открытий
27 комментариев

Попытки перезадать начальные координаты курсора в процессе с учетом его смещения тоже проблематичны, ведь камера не моментально меняет свое положение, и это лишь усиливает тряску.

Ответить

Алгоритм работает корректно, но происходит тряска экранаРедизайн ДТФ разрабатывался так же

Ответить

потому что я им и помогала

Ответить

Уже в который раз вижу надпись "потрогай меня", но Оксана даже мышкой рядом не провела. Вот это выдержка!)

Ответить