Обнаружение игрока врагом

В этой теме 3 ответа, 2 участника, последнее обновление Павел Букреев Павел Букреев 3 года/лет, 3 мес. назад.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #1320
    +2
    LastikPro
    LastikPro
    Участник
    Сообщений:93

    Зарегистрирован:
    09.07.2015

    Репутация:60

    Ниже я приведу пример из своей игры (карта в игре tmx но код можно переделать под масив).

    Для начала ,если вы не хотите чтобы поле зрения врага было 360 градусов , нужно сделать вектор взгляда врага.

    Поскольку я делал платформер, то у меня два направления: влево и вправо.Я добавил перечисляемые тип EnemyState отвечающий за это.

    В столкновении врага с картой добавил:

    В update врага:

    Осталось проверить пересечение игрока и взгляда врага:

    Теперь враг замечает игрока только если повёрнут к нему лицом если убрать вектор то он будет замечать игрока затылком. Но есть небольшая проблем враг игнорирует стенки . Чтобы это исправить нужно добавить слепые зоны для врага. То  есть если игрок в слепой зоне то он невидим для врага. Для этого на карте нужно добавить объекты (я назвал их blindspot) а в взаимодействие игрока с картой нужно добавить :

    Осталось добавить в взгляде врага проверку на слепые зоны:

    Удачи в ваших проектах!

     

     

     

    #1321
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:586

    Зарегистрирован:
    04.01.2015

    Репутация:104

    молодец) так и надо – делиться опытом:)
    обсуждали тему в другой ветке – у меня была мысль предложить тебе сделать такие точки, но если можно обойтись без них, то надо стараться обойтись. ведь таким образом мы тянем еще один объект в карте, плюс его так же надо сопровождать и ставить рядом с врагами. может потом удастся сделать взаимодействие врага через объект solid (простая стена), тогда разработчику не придется думать о слепых зонах и добавлять их в игру.
    но ведь работает :) немного похоже на дз к одному из уроков – там надо было реализовать видимость игрока врагом и преследование:) так держать , лови плюс:)

    #1322
    LastikPro
    LastikPro
    Участник
    Сообщений:93

    Зарегистрирован:
    09.07.2015

    Репутация:60

    Но такой вариант в 100500 раз легче чем проверять расстояние между игроком, стеной, и врагом.

    #1323
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:586

    Зарегистрирован:
    04.01.2015

    Репутация:104

    Это да. всё же я думаю когда нибудь запилим по всякому :)

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)

Для ответа в этой теме необходимо авторизоваться.