Плохо! Плохо!:  0
Показано с 1 по 3 из 3

Тема: Движущиеся шипы (для rpg maker MV)

  1. #1

    По умолчанию Движущиеся шипы (для rpg maker MV)

    1. В чём идея
    Я решил сделать шипы, последовательно появляющиеся из соседних клеток. Вот как на этом ролике:



    2. Графика для шипов
    Я нарисовал чарсет для этих шипов (а то имеющиеся толстенькие конусы меня не очень устраивали):



    3. Событие для шипов
    Создаём событие, в котором устанавливаем графику для шипов и следующие настройки (частоту ставим максимальную, а от скорости будет зависеть, насколько быстро они перемещаются):



    4. Маршрут для шипов
    Основные события для того, чтобы шипы выскакивали из-под пола и перемещались на соседнюю клетку, будут происходить в маршруте. Выглядит он примерно так:



    В момент перемещения на соседнюю клетку шипы становятся невидимыми, чтобы игрок не видел переползания их графики. Ожиданием настраивается скорость выползания шипов из-под пола.

    5. Скрипт для звука шипов
    Это скрипт для того, чтобы громкость звука, с которым шипы выскакивают, уменьшалась, когда они удаляются от игрока. Он состоит из двух строчек. В первой вычисляется расстояние от шипов до игрока. Это значение записывается в переменную (в моём случае это переменная №8):

    Код:
    $gameVariables.setValue(8, Math.abs($gamePlayer.x - $gameMap.event(this._eventId).x) + Math.abs($gamePlayer.y - $gameMap.event(this._eventId).y));
    Во второй строчке проигрывается звук (это звук из файла «Evasion2»). Я решил, что на расстоянии в 16 клеток от игрока звука не будет вообще. Громкость уменьшается на 5 за каждую клетку расстояния между игроком и шипами:

    Код:
    if ($gameVariables.value(8) <16) {AudioManager.playSe({name: 'Evasion2', volume: (80 - ($gameVariables.value(8) * 5)), pitch: 100})};
    6. Возвращение шипов на исходную позицию
    Когда шипы достигают конечной точки своего маршрута (в моём случае координаты 19 по горизонтали), они возвращаются в начальную позицию. А точнее, в клетку слева от начальной позиции, потому что сразу после этого они делают шаг вправо:

    Код:
    if ($gameMap.event(this._eventId).x === 19) {$gameMap.event(this._eventId).locate(3, 17)};
    7. Нанесение урона
    Как вы заметили, в самом событии шипов нет ничего, что бы наносило урон игроку. Они просто выскакивают. Вначале я планировал сделать урон при касании, однако это работало плохо, могло нанести урон, когда игрок пробегает через убранные шипы, или не нанести, когда он просто стоит на месте, а шипы проходят сквозь него. Поэтому я сделал нанесение урона отдельным событием:



    В чём его смысл? Когда шипы появляются из-под пола, в их маршруте включается триггер (в моём случае, это переключатель №31), после чего начинает работать событие нанесения урона (параллельно!). Оно проверяет, совпадает ли координата игрока с координатой шипов (у меня событие шипов называется «Ловушка») и, если совпадает, происходят световые и звуковые эффекты нанесения урона, и у игрока отнимается ХП.
    После этого (важно!) я отключаю переключатель, чтобы это событие перестало работать, иначе ХП отнимется не один раз, а будет убывать всё время, пока игрок с шипами находятся на одной клетке (обнулится почти моментально).

    8. Дополнительные фишки
    Ничто не мешает разместить на карте несколько таких шипов, надо только сравнивать координаты каждого из событий шипов с координатой игрока в событии нанесения урона.
    Не обязательно двигать эти шипы только по прямой, они могут иметь любую траекторию: но надо будет либо вписывать её всю в маршрут события, либо обозначать точки поворота, в которых событие будет переключаться на страницу с другим маршрутом.
    Я вовсе отключаю эти шипы, когда игрок отходит от них достаточно далеко, просто чтобы не тратили ресурсы на вычисления.
    На видео движется сразу пара шипов. Чтобы не делать два события, я сделал из шипов чарсет в две клетки по вертикали, так что получилось одно событие с графикой из двух шипов одни над другими. В этом случае при нанесении урона, я проверяю не только координату события шипов, но и координату на 1 клетку выше его.

  2. #2
    Бывалый Аватар для Darchan Kaen
    Информация о пользователе
    Регистрация
    17.06.2013
    Адрес
    Одесса
    Сообщений
    851
    Записей в дневнике
    3
    Репутация: 47 Добавить или отнять репутацию

    По умолчанию

    В MZ вызов Аудиоменеджера (и всего, что тут в Скрипте) такой же, так что такой подход можно и в MZ использовать.

  3. #3
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,283
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Молодец, хорошая статья. Прикольные вышли шипы.

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

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

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

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

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

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

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Движущиеся шипы (для rpg maker MV)