Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Источник проблемы дерганности ивентов?

  1. #1

    По умолчанию Источник проблемы дерганности ивентов?

    На тестовой карте заметил странный баг.
    При прыжке на 1 клетку Ивенты дергаются в противоположную сторону, что особенно хорошо видно по крышам домов.
    Видео:


    С чем это в теории может быть связано? А то хочется пофиксить с минимумом костылей.

    П.С. Я во всем разобрался. И решил поделиться результатом.

    Объяснительная часть:
    Ошибка на 1 пиксель у ивентов возникает при обновлении координат в (передвижении камеры, прыжках или нестандартных скоростях персонажа)
    В случае прыжков ошибка возникает в update_jump при взаимодействии @jump_count с координатами @real_X,@real_y.
    (Это момент перемещения в прыжке.)

    Так вот это происходит когда @jump_count не входит в [2,4,8,16,32], а так как @jump_count=@jump_peak*2
    то его значение зависит от distance и @move_speed от сюда и разброс что с одной скоростью на одно кол-во клеток все хорошо, а с другой уже нет.

    Решение:
    1.Способ решения через обновлении карты
    Этот способ описан здесь: https://forums.rpgmakerweb.com/index...ror-fix.17448/

    П.С. В том скрипте координаты Х и У приводятся к ближайшему 32 (в принципе 16 тоже пойдут)

    2.Способы решения (костыли для прыжков):
    a) Переписать update_jump.
    Только для кастомных прыжков иначе лучше взять вариант с обновлением или костыль.

    b) Привести к наиболее вероятным высотам 4,8
    @jump_peak = 10 + distance -@move_speed
    @jump_peak/=4
    @jump_peak*=4
    @jump_peak=[@jump_peak,8].min

    c) Привести к потенциальным 4,8,16
    @jump_peak = 10 + distance -@move_speed
    @jump_peak/=4
    @jump_peak*=4
    @jump_peak=(@jump_peak > 12 ? [@jump_peak,16].max : [@jump_peak,8].min)
    Нет смысла ради этого прибегать к бинарным операции(1 и 2 невозможны и визуально являются отсутствием прыжка)

    d) Задать подходящую высоту и по совместительству длину анимации перехода:
    @jump_peak = 8

    e) Разделить @jump_peak и @jump_count где приводить уже @jump_count

    f) Привязать к вашим переменным, как одно из значений, так и оба дабы иметь возможность быстра настроить нужные параметры.
    @jump_peak = $game_variables[x]
    Последний раз редактировалось Tsargorn Ragver De Zatire; 03.11.2021 в 18:19. Причина: дополнение

  2. #2
    Хранитель Аватар для Imaginatium
    Информация о пользователе
    Регистрация
    06.12.2015
    Адрес
    АСТРАЛ
    Сообщений
    2,061
    Записей в дневнике
    51
    Репутация: 71 Добавить или отнять репутацию

    По умолчанию

    Я ничего не вижу))) Вроде всё как обычно

  3. #3

    По умолчанию

    Тут более наглядно.
    1 -

    Левый кусок крыши съезжает видны просветы меж блоков
    2 -

    При прыжке сверху появляется красная линия, да и борта съезжают.
    Последний раз редактировалось Tsargorn Ragver De Zatire; 02.11.2021 в 22:06.

  4. #4
    Хранитель Аватар для Imaginatium
    Информация о пользователе
    Регистрация
    06.12.2015
    Адрес
    АСТРАЛ
    Сообщений
    2,061
    Записей в дневнике
    51
    Репутация: 71 Добавить или отнять репутацию

    По умолчанию

    Ага, теперь увидел.

    А ты ивент добавляешь из набора чарсетов или непосредственно из набора тайлов?:


  5. #5

    По умолчанию

    Я нашел проблему.
    Если кто столкнется с похожим:
    Дело в том что по умолчанию в jump из Game_Character пик прыжка рассчитывается как

    @jump_peak = 10 + distance - @move_speed

    И если скорость больше 3(normal и более) а дальность 1 клетка может возникает эта ошибка.
    Я пока не тестил что именно мешает корректной прокрутке карты (jump_height или же @jump_count),
    но даже так все можно поправить без проблем, заменой на:

    @jump_peak = 10 + distance - [@move_speed,3].min (Нет. не работает для всех значений скорости.)
    Последний раз редактировалось Tsargorn Ragver De Zatire; 03.11.2021 в 00:02.

  6. #6

    По умолчанию

    У меня такое тоже бывало, например если скорость игроку в маршруте дробную поставить, или в скрипте изменить distance_per_frame , у меня свои большие персонажи в несколько клеток поэтому подбирал более подходящую. Также есть скрипт на плавный ход камеры за игроком, в нём такое же повторяется. Если избавиться от всего перечисленного - баг пропадает. Как вариант - маппить без ивентов, только тайлами, либо как-то с умом маскировать. И для мейкера перемещение прыжками также не стандартное перемещение. Мне видится проблема именно в скролле\центрировании камеры на игроке, где-то в подсчётах скриптов положение ивента\его картинки получается не целым числом и от этого смещение на пиксель.

  7. #7

    По умолчанию

    Из чарсетов, там фишка была в том что
    если бежать или прыгать на 2 клетки то все нормально.

  8. #8

    По умолчанию

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

  9. #9

    По умолчанию

    Я во всем разобрался. И решил коль уж спрашивал, поделиться результатом.

    Объяснительная часть:
    Ошибка возникает в update_jump при взаимодействии @jump_count с координатами @real_X,@real_y.(Это момент перемещения в прыжке.)
    Так вот это происходит когда @jump_count не входит в [2,4,8,16,32...], а так как @jump_count=@jump_peak*2
    то его значение зависит от distance и @move_speed от сюда и разброс что с одной скоростью на одно кол-во клеток все хорошо, а с другой уже нет.

    Способы решения помимо маскировки и не использования такой графики:
    1) Переписать update_jump я в этом не помощник ибо мне это не нужно
    2) Привести к наиболее вероятным высотам 4,8
    @jump_peak = 10 + distance -@move_speed
    @jump_peak/=4
    @jump_peak*=4
    @jump_peak=[@jump_peak,8].min
    2) Привести к потенциальным 4,8,16
    @jump_peak = 10 + distance -@move_speed
    @jump_peak/=4
    @jump_peak*=4
    @jump_peak=(@jump_peak > 12 ? [@jump_peak,16].max : [@jump_peak,8].min)
    п.с. нет смысла прибегать к бинарным операции
    3) Самый простой задать подходящую высоту и по совместительству длину анимации перехода: @jump_peak = 8
    4) Разделить @jump_peak и @jump_count где приводить уже @jump_count
    5) Привязать к вашим переменным, как одно из значений, так и оба дабы иметь возможность быстра настроить нужные параметры.
    @jump_peak = $game_variables[x]

  10. #10

    По умолчанию

    Вот здесь хорошо описана ситуация и решение проблемы https://forums.rpgmakerweb.com/index...ror-fix.17448/

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Источник проблемы дерганности ивентов?