Создано и тестировано в RM2k. Должно работать и в других мейкерах, когда настроено.
Этот туториал позволит вам создавать "сражения при прикосновении", которые интереснее, чем обычный шаблон "Бежать к герою" → "Прикосновение" → "Битва". Что будут делать монстры из этого туториала:
- Они будут следовать по пути, заданным разработчиком (это может быть случайный путь, если вы пожелаете).
- Они будут просматривать область в шесть тайлов перед собой и 1 тайл в каждую сторону (6x3) от себя в поисках героя.
- Если они заметят героя, они будут гнаться за ним и инициируют битву при прикосновении.
- Они могут быть атакованы сзади, если герой ещё не был обнаружен. Это инициирует "Упреждающую атаку".
- Если герой сбежит из битвы, у него есть шанс убежать, прежде чем монстр вновь погонится за ним.
Содержание
- Создание
- Эвент — Страница 1
- Эвент — Страница 2
- Эвент — Страница 3
- Эвент — Страница 4
- Что-нибудь ещё?
Создание
Что вам нужно для создания монстра - это следующее:
Три свича: "<Имя монстра> заметил вас", "Побег активен", "<Имя монстра> мёртв". "Побег активен" - это свич, общий для всех монстров. Остальные два уникальны для каждого эвента с монстром (т.е. вы должны создать новые для каждого монстра на карте (Для версии XP и выше, я думаю, можно использовать локальные свичи - Прим. пер.))
Две переменные: "<Имя монстра> X" и "<Имя монстра> Y". Они уникальны для каждого эвента с монстром (т.е., вы должны создать новые для каждого монстра на карте).
Эвент — Страница 1
Первая страница эвента монстра, можно сказать, главная. Она контролирует "нормальное" движение монстра, на ней определяется, когда монстр обнаружил героя, когда герой проскользнул за спиной монстра, и на ней запускается битва с упреждающим ударом, если игрок так сделал.
Во-первых, вы должны поставить графику монстра на нормальную. Эвент должен быть включен как параллельный (так как там нужен цикл) и расположен "Same Level As Hero" [На том же уровне, что и герой]. Тип движения может быть любой, но обычно лучше задать его самостоятельно ["By Its Route"].
Во-вторых, нам нужно проверить поле зрения монстра на наличие героя. Мы сделаем это, присвоив переменным X и Y значения координат монстра и вычитанием координат героя из них. Потом, основываясь на том, куда смотрит монстр, мы можем использовать эти две разности чтобы определить, есть ли герой в поле зрения монстра или нет. Если герой в поле зрения монстра, тогда мы включаем свич, позволяющий монстру бежать за героем.
Наконец, если герой не в поле зрения монстра, мы проверяем, что он находится прямо за спиной монстра. В этом случае мы инициируем "упреждающую атаку". Если этого не происходит, мы ничего не делаем и запускаем вычислительный цикл снова.
Вот как должна выглядеть страница (не бойтесь, что так длинно: многое из этого это лишь повтор одного и того же, но с другими значениями):
Важно понимать, как эта проверка переменных работает. Что мы сделали, как я говорил ранее, это вычли координаты X и Y героя из координат X и Y монстра. Как это относится к положению на карте?
Ну, RM2k отмеряет координаты от левого верхнего угла экрана. Поэтому, если мы отнимаем значения героя от значений монстра
- Если разность X отрицательна, значит у героя больше значение X и он правее монстра
- Если разность X положительна, значит у героя меньше значение X и он левее монстра
- Если разность Y отрицательна, значит у героя больше значение Y и он ниже монстра
- Если разность Y положительна, значит у героя меньше значение Y и он выше монстра
Так что, когда монстр смотрит вверх, герой перед монстром, если разность Y положительна и герой достаточно близко к монстру, чтобы быть увиденным, если Y находится между 0 и 6
Понятно?
Не бойтесь, другие страницы гораздо проще.
Эвент — Страница 2
Страница 2 — это та страница, которая активируется, когда монстр "видит" героя. Таким образом, вы должны поставить тип движения "Walk Towards Hero" ["Идти к герою"], поскольку вы хотите, чтобы монстр беспощадно преследовал героя. Эвент должен быть "Below Hero" ["Ниже героя"] (это не допустит случая, при котором монстр способен атаковать героя с соседнего тайла, даже когда соседний тайл — это край обрыва или что-нибудь такое же нелепое) и включаться "On Touch (Event, Hero)" ["При столкновении (Событие, Герой)"], так что герой не должен самостотельно идти к монстру, чтобы запустить событие. Я бы поставил скорость ниже, чем скорость ходьбы героя, чтобы у игрока был шанс избежать битвы, если он захочет, но это полностью ваше решение. Вы можете утверждать, что у героя есть шанс избежать битвы лишь избегая попадания в поле зрения врага!
Вот как должен выглядеть эвент:
Всё, что делает эта страница, — это вызывает битву, если герой касается монстра. Активирующий эту страницу переключатель включается на странице 1, когда герой попадает в поле зрения монстра - видите, как это связано?
Эвент — Страница 3
Эта страница даёт герою фору, стоит ему сбежать из битвы. Заметили, что каждый побег на страницах ранее включает свитч "Побег активен" ["Running Away Active"]? Вот зачем это делается.
Эта страница действительно простая и выглядит вот так:
Видите, что свитч, включающий погоню за игроком, здесь включён? Это чтобы убедиться, что после побега монстр не будет просто шататься рядом, словно ничего не произошло.
Эвент — Страница 4
Просто чистая страница. Это то, что вы видите, когда враг убит.
Что-нибудь ещё?
Если вы хотите, чтобы враги возрождались, когда герой возвращается на карту, вам надо выключить все свитчи, когда герой телепортируется на карту, и сбросить все переменные на 0. Если вы не хотите возрождения врагов, тогда только отключите свитч "<Имя монстра> заметил вас" и сбросьте все переменные на ноль, когда герой телепортируется на карту.
Удачной охоты, герои!