Интелект в игре - Форум Игроделов
Пн, 06 Май 2024, 18:14 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » GAME MAKER » МАНУАЛЫ И УРОКИ » Интелект в игре
Интелект в игре
AnnMДата: Пн, 14 Июн 2010, 16:25 | Сообщение # 1
 
Сообщений: 32
Награды: 2
Репутация: 28
Статус: Offline
Этот урок больше подходит для игр с верху.
Начнём!
Сначала создаём игрока , ещё нам понадобиться объект NPC и объект блока который наш герой будит опходить НЕЗАБУДТЕ ПОСТАВИТЬ СПРАЙТЫ ДЛЯ ВСЕХ ОБЪЕКТОВ!
Для начала надо решить ,что должен делать наш враг.Было бы глупоа если враг постоянно преследовал нашего героя.Поэтому наш враг будет преследывать его только когда видит.
Теперь нам понадобиться функция collision_line (! collision_line(x1, y1, x2, y2, obj, prec, notme) – функция проверяет, есть ли столкновение между линией сегмента из (x1, y1), в (x2, y2) и объектами obj. Вы можете использовать её для проверки - может ли образец объекта видеть другой образец объекта, заодно проверяя, пролегает ли линия сегмента между стеной!)
Теперь мы ведём дополнительную переменную Sight(Введение переменной будет полезно если у нас будет много врагов) happy
Для этого в событие Create каждого героя мы запишем следующее:

Sight=100*random(5);
Gotoplayer=0;

Вторая переменная Gotoplayer говорит за себя: если поставить эту переменную равной 1 то враг будет идти за игроком с самого начала игры, независимо от того видит он его или нет.
Теперь нужно записать следующее в событие Step:

If distance_to_object(obj_player) < sight
{
If collision_line(x, y, obj_player.x, obj_player.y, obj_block, 0, 0)
{
Gotoplayer=1
}

Кстати, этот кусок кода можно записать иначе. Например, так:

If (distance_to_object(obj_player) < sight) and (collision_line(x, y, obj_player.x, obj_player.y, obj_block, 0, 0))
{
Gotoplayer=1
}

Напишем следующее в событии Step ниже предыдущего куска кода:

If Gotoplayer=1
{
direction=point_direction(x, y, obj_player.x, obj_player.y)
mp_potential_step(obj_player.x, obj_player.y, 4, 0)
}

P.S Если скорость врага покажется слишком высокой, то можно заменить цифру 4 в функции mp_potential_speed на меньшую.

Удачи! biggrin

 
СообщениеЭтот урок больше подходит для игр с верху.
Начнём!
Сначала создаём игрока , ещё нам понадобиться объект NPC и объект блока который наш герой будит опходить НЕЗАБУДТЕ ПОСТАВИТЬ СПРАЙТЫ ДЛЯ ВСЕХ ОБЪЕКТОВ!
Для начала надо решить ,что должен делать наш враг.Было бы глупоа если враг постоянно преследовал нашего героя.Поэтому наш враг будет преследывать его только когда видит.
Теперь нам понадобиться функция collision_line (! collision_line(x1, y1, x2, y2, obj, prec, notme) – функция проверяет, есть ли столкновение между линией сегмента из (x1, y1), в (x2, y2) и объектами obj. Вы можете использовать её для проверки - может ли образец объекта видеть другой образец объекта, заодно проверяя, пролегает ли линия сегмента между стеной!)
Теперь мы ведём дополнительную переменную Sight(Введение переменной будет полезно если у нас будет много врагов) happy
Для этого в событие Create каждого героя мы запишем следующее:

Sight=100*random(5);
Gotoplayer=0;

Вторая переменная Gotoplayer говорит за себя: если поставить эту переменную равной 1 то враг будет идти за игроком с самого начала игры, независимо от того видит он его или нет.
Теперь нужно записать следующее в событие Step:

If distance_to_object(obj_player) < sight
{
If collision_line(x, y, obj_player.x, obj_player.y, obj_block, 0, 0)
{
Gotoplayer=1
}

Кстати, этот кусок кода можно записать иначе. Например, так:

If (distance_to_object(obj_player) < sight) and (collision_line(x, y, obj_player.x, obj_player.y, obj_block, 0, 0))
{
Gotoplayer=1
}

Напишем следующее в событии Step ниже предыдущего куска кода:

If Gotoplayer=1
{
direction=point_direction(x, y, obj_player.x, obj_player.y)
mp_potential_step(obj_player.x, obj_player.y, 4, 0)
}

P.S Если скорость врага покажется слишком высокой, то можно заменить цифру 4 в функции mp_potential_speed на меньшую.

Удачи! biggrin


Автор - AnnM
Дата добавления - 14 Июн 2010 в 16:25
Jericho91Дата: Ср, 16 Июн 2010, 12:29 | Сообщение # 2
あんたバカァ?!
 
Сообщений: 569
Награды: 11
Репутация: 495
Статус: Offline
Ето может показатса немного страно, но тупость врагов можно компенсировать слабостю главного персонажа (уменшыть показатели Жызни) biggrin
 
СообщениеЕто может показатса немного страно, но тупость врагов можно компенсировать слабостю главного персонажа (уменшыть показатели Жызни) biggrin

Автор - Jericho91
Дата добавления - 16 Июн 2010 в 12:29
Форум Игроделов » GAME MAKER » МАНУАЛЫ И УРОКИ » Интелект в игре
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024