RayCast in python + pygame

У меня появились некоторые вопросы по работе технологии raycast. Создавая свой проект pygame, я попытался сделать raycast и вот его версия:

def raycast(self):
    x1=hero.rect.x-self.rect.x
    y1=hero.rect.y-self.rect.y
    vh1=math.sqrt(x1**2+y1**2)
    for p in wolls:
        x=p.rect.x-self.rect.x
        y=p.rect.y-self.rect.y
        vh=math.sqrt(x**2+y**2)
        if vh<=vh1:
            self.see_hero=True
        else:
            self.see_hero=False

В начале функции я вычисляю положение игрока и npc, потом получаю расстояние от игрока до npc в пикселях(вроде).

Во второй части for p in wolls: я вычисляю расстояние от стены до npс. После вычисления расстояния от стены до npc я сравниваю результаты вычисленных расстояний:

Запуская свой проект, всё работает не так, как надо. Не могли бы вы помочь мне с этой проблемой?


Ответы (1 шт):

Автор решения: GunTHE

Попробуйте создать переменную, включающую диапазон всех координатных точек стены (или только точек на её границе). При прохождении луча от NPC до Вас нужно будет рассчитать, проходит ли луч через координатные точки стены, если нет — то NPC идет за вами, иначе же он останавливается.

→ Ссылка