У меня появились некоторые вопросы по работе технологии 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 я сравниваю результаты вычисленных расстояний:
Запуская свой проект, всё работает не так, как надо. Не могли бы вы помочь мне с этой проблемой?
-
Что значит "работает не так, как надо"?CrazyElf– CrazyElf2020年09月05日 14:47:37 +00:00Commented 5 сент. 2020 в 14:47
-
Даже когда игрок за стеной npc идут за игроком, хотя не должныАлексей– Алексей2020年09月05日 16:48:23 +00:00Commented 5 сент. 2020 в 16:48
-
у вас не правильный алгоритм. вам надо выпустить лучь от игрока до npc, если между ними не будет стены, то npc должен будет пойти за игракомDanis– Danis2020年09月24日 19:11:52 +00:00Commented 24 сент. 2020 в 19:11
-
Danis, я это понял ещё когда узнал что такое raycast, а вот как его сделать я не знаюАлексей– Алексей2020年09月26日 18:37:23 +00:00Commented 26 сент. 2020 в 18:37
-
посмотрите некоторые советы здесь stackoverflow.com/questions/56316263/… и здесь stackoverflow.com/questions/63838657/…S. Nick– S. Nick2020年10月09日 09:58:12 +00:00Commented 9 окт. 2020 в 9:58
1 ответ 1
Попробуйте создать переменную, включающую диапазон всех координатных точек стены (или только точек на её границе). При прохождении луча от NPC до Вас нужно будет рассчитать, проходит ли луч через координатные точки стены, если нет — то NPC идет за вами, иначе же он останавливается.
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопрос