Четверг, 19 Май 2011 17:30

Бродящие по карте, охотящиеся за героем монстры, которых можно атаковать сзади Избранное

Автор  Fallen-Griever
Оцените материал
(3 голосов)
Автор: Fallen-Griever
Перевод и перенос в энциклопедию: James
Оригинал статьи
Статья переведена и опубликована без согласия автора

Монстры, которые бродят по карте, гоняются за героем, если он окажется на линии взгляда монстра, и могут быть атакованы сзади...

Создано и тестировано в RM2k. Должно работать и в других мейкерах, когда настроено.

Этот туториал позволит вам создавать "сражения при прикосновении", которые интереснее, чем обычный шаблон "Бежать к герою" → "Прикосновение" → "Битва". Что будут делать монстры из этого туториала:

  • Они будут следовать по пути, заданным разработчиком (это может быть случайный путь, если вы пожелаете).
  • Они будут просматривать область в шесть тайлов перед собой и 1 тайл в каждую сторону (6x3) от себя в поисках героя.
  • Если они заметят героя, они будут гнаться за ним и инициируют битву при прикосновении.
  • Они могут быть атакованы сзади, если герой ещё не был обнаружен. Это инициирует "Упреждающую атаку".
  • Если герой сбежит из битвы, у него есть шанс убежать, прежде чем монстр вновь погонится за ним.

Содержание

  1. Создание
  2. Эвент — Страница 1
  3. Эвент — Страница 2
  4. Эвент — Страница 3
  5. Эвент — Страница 4
  6. Что-нибудь ещё?

Создание

Что вам нужно для создания монстра - это следующее:

Три свича: "<Имя монстра> заметил вас", "Побег активен", "<Имя монстра> мёртв". "Побег активен" - это свич, общий для всех монстров. Остальные два уникальны для каждого эвента с монстром (т.е. вы должны создать новые для каждого монстра на карте (Для версии XP и выше, я думаю, можно использовать локальные свичи - Прим. пер.))

Две переменные: "<Имя монстра> X" и "<Имя монстра> Y". Они уникальны для каждого эвента с монстром (т.е., вы должны создать новые для каждого монстра на карте).

Эвент — Страница 1

Первая страница эвента монстра, можно сказать, главная. Она контролирует "нормальное" движение монстра, на ней определяется, когда монстр обнаружил героя, когда герой проскользнул за спиной монстра, и на ней запускается битва с упреждающим ударом, если игрок так сделал.

Во-первых, вы должны поставить графику монстра на нормальную. Эвент должен быть включен как параллельный (так как там нужен цикл) и расположен "Same Level As Hero" [На том же уровне, что и герой]. Тип движения может быть любой, но обычно лучше задать его самостоятельно ["By Its Route"].

Во-вторых, нам нужно проверить поле зрения монстра на наличие героя. Мы сделаем это, присвоив переменным X и Y  значения координат монстра и вычитанием координат героя из них. Потом, основываясь на том, куда смотрит монстр, мы можем использовать эти две разности чтобы определить, есть ли герой в поле зрения монстра или нет. Если герой в поле зрения монстра, тогда мы включаем свич, позволяющий монстру бежать за героем.

Наконец, если герой не в поле зрения монстра, мы проверяем, что он находится прямо за спиной монстра. В этом случае мы инициируем "упреждающую атаку". Если этого не происходит, мы ничего не делаем и запускаем вычислительный цикл снова.

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

Roaming_Monsters_Page_1

Важно понимать, как эта проверка переменных работает. Что мы сделали, как я говорил ранее, это вычли координаты 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)" ["При столкновении (Событие, Герой)"], так что герой не должен самостотельно идти к монстру, чтобы запустить событие. Я бы поставил скорость ниже, чем скорость ходьбы героя, чтобы у игрока был шанс избежать битвы, если он захочет, но это полностью ваше решение. Вы можете утверждать, что у героя есть шанс избежать битвы лишь избегая попадания в поле зрения врага!

Вот как должен выглядеть эвент:

Roaming_Monsters_Page_2

Всё, что делает эта страница, — это вызывает битву, если герой касается монстра. Активирующий эту страницу переключатель включается на странице 1, когда герой попадает в поле зрения монстра - видите, как это связано?

Эвент — Страница 3

Эта страница даёт герою фору, стоит ему сбежать из битвы. Заметили, что каждый побег на страницах ранее включает свитч "Побег активен" ["Running Away Active"]? Вот зачем это делается.

Эта страница действительно простая и выглядит вот так:

Roaming_Monsters_Page_3

Видите, что свитч, включающий погоню за игроком, здесь включён? Это чтобы убедиться, что после побега монстр не будет просто шататься рядом, словно ничего не произошло. 

Эвент — Страница 4

Просто чистая страница. Это то, что вы видите, когда враг убит.

Roaming_Monsters_Page_4

Что-нибудь ещё?

Если вы хотите, чтобы враги возрождались, когда герой возвращается на карту, вам надо выключить все свитчи, когда герой телепортируется на карту, и сбросить все переменные на 0. Если вы не хотите возрождения врагов, тогда только отключите свитч "<Имя монстра> заметил вас" и сбросьте все переменные на ноль, когда герой телепортируется на карту.

Удачной охоты, герои!

Прочитано 19522 раз Последнее изменение Четверг, 19 Май 2011 20:18
Другие материалы в этой категории: « Обмен HP и MP

7 комментарии

Авторизуйтесь, чтобы получить возможность оставлять комментарии