Создать игру, создание игр, конструктора игр, игровые движки, разработка игр, сделать игру
Приветствую Вас Гость · Вход · Регистрация  ·  Новые сообщения · Участники · Правила · Поиск · RSS
  • Страница 1 из 1
  • 1
Простой ИИ для разных типов игр на Adobe Flash
Rainbow_Sparkle Дата: Четверг, 19.09.2013, 07:59 | Сообщение # 1
Просмотр профиля: Rainbow_Sparkle

Сообщений: [390]
Есть герой. Он ходит туда-сюда. Есть враг. Он пока ничего не умеет. Сейчас мы научим врага ходить вслед за игроком. Сделаем мы это парой условий.

Принцип таков(на примере платформера):

Как видите, ничего сложного. Приступим.

Шаг I
  • Создайте героя.
  • В панели свойств назовите его object1_mc.
  • Создайте врага.
  • В панели свойств назовите его object2_mc.


Отлично, героя(object1_mc) и врага(object2_mc) мы создали. Теперь приступаем к программированию.

Шаг II
  • Научим героя ходить. Выделите его и в панели действий введите следующий код:



Код
onClipEvent(load) {
      //Скорость
      var speed = 6;
}
onClipEvent (enterFrame) {
      //Движение влево
      if (Key.isDown(Key.LEFT))
      {
          _x -= speed;
      }
      //Движение вправо
      if (Key.isDown(Key.RIGHT))
      {
          _x += speed;
      }
      //Движение вперёд
      if (Key.isDown(Key.UP))
      {
          _y -= speed;
      }
      //Движение назад
      if (Key.isDown(Key.DOWN))
      {
          _y += speed;
      }
}
  • Готово, теперь выделим кадр на временной шкале.
  • Снова откройте панель действий, если вы её закрыли.
  • Напишите код:



Код
//Скорость врага
var speed2:Number = 4;

onEnterFrame = function ()
{
      //Движение врага за игроком
      //Вправо
      if (object2_mc._x < (object1_mc._x))
      {
          object2_mc._x += speed2;
      }
      //Влево
      if (object2_mc._x > (object1_mc._x))
      {
          object2_mc._x -= speed2;
      }
      //Вниз
      if (object2_mc._y < (object1_mc._y))
      {
          object2_mc._y += speed2;
      }
      //Вперёд
      if (object2_mc._y > (object1_mc._y))
      {
          object2_mc._y -= speed2;
      }
};
  • Готово, можете проверять ролик.


Если хотите, то можете в конце обработчика событий(после условий) вписать следующее:

Код
//Если враг поймал героя...
if (object1_mc.hitTest(object2_mc))
{
      //... то возвращаем всё на свои места
      object1_mc._x = 50;
      object1_mc._y = 50;
      object2_mc._x = 500;
      object2_mc._y = 350;
      //Выводим сообщение о поимке
      trace("Поймал!");
}

Можно ещё добавить поворот врага в сторону героя, но это уже сами.

Если вы делаете не TDS, а платформер, то просто уберите 2 последних условия.

Исходник: ЯДиск
  • Страница 1 из 1
  • 1
Поиск:

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2024 Хостинг от uCoz
Топ Разработка игр