Понедельник, 23 Декабря 2024, 03:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Машина состояний для ИИ
DaedrosДата: Пятница, 29 Июля 2016, 00:33 | Сообщение # 1
был не раз
Сейчас нет на сайте
Доброго времени суток, весь замучался. Суть проблемы - пишу машину состоянии для ИИ, как вы уже могли прочесть в заголовке.

есть следующие состояния:
state_enemy_idle

state_enemy_stall

state_enemy_wander

state_enemy_chasing

state_enemy_choose_next

и scr_check_player


и событие collision для врага и ГГ


И все было бы здорово, если бы не следующие ситуации:

ситуация 1: иногда противник может атаковать с явно преувеличенной дистанции. при этом ударить нас он не может, а мы его вполне себе можем бить

ситуация 2: - самая главная проблема
Заскринить не могу, но могу описать суть - персонаж противника после атаки внезапно начинает оббегать ГГ либо убегать непонятно куда, атакуя через секунду забежав к персонажу с рандомной стороны.
как бы можно сказать что это фича, но это жутко раздражает, если честно

Опять же, необходимый код для других событий/объектов/скрипты могу предоставить

Уверен что проблема дурацкая и легко решаемая, но я уже не знаю как. Пробовал вместо mp_potential_step(o_hero.x, o_hero.y, sp, false); следующие варианты:
move_towards_point(targetx, targety,sp); // просто после атаки пробегает сквозь персонажа, разворачивается и бежит сквозь персонажа в обратном направлении
mp_potential_step_object(targetx, targety, sp, 0); //не заметил разницы с mp_potential_step
и
x += sign(targetx - x); //ужасно дрыгаясь прибегает к персонажу, атакует и так же ужасно дрыгаясь начинает оббегать
y += sign(targety - y);

Лучше не стало. Увы.
Надеюсь на вашу помощь


Сообщение отредактировал Daedros - Пятница, 29 Июля 2016, 00:36
HuricaneДата: Воскресенье, 31 Июля 2016, 01:18 | Сообщение # 2
почетный гость
Сейчас нет на сайте
Я так понимаю, нет состояния атаки. Значит нужно сделать, чтобы во время атаки при соблюдении необходимых условий происходила атака, а не движение
Также глюки может вызывать сочетание этих строк
Код
if distance_to_object(o_hero) > 1
    {
    sp = 2;

т.к. после последнего шага, расстояние как правило будет <1


Помогу с текстом, сюжетом, сценарием игры

Сообщение отредактировал Huricane - Воскресенье, 31 Июля 2016, 01:27
DaedrosДата: Понедельник, 01 Августа 2016, 16:06 | Сообщение # 3
был не раз
Сейчас нет на сайте
Huricane, Спасибо, да, там явно косячное место было, я в разных примерах смотрел реализацию и что-то слепить пытался. Разобрался, сделал по-другому, без доп. состояния атаки.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг