UE4 получить всех игроков в FoV - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь построить массив всех пешек игроков, которые находятся в конусе игроков. Я бы предпочел не делать циклический переход через GetAllActorsofClass по очевидным причинам производительности. Это будет сделано каждый тик.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Используйте MultiSphereTrace от вашего игрока в направлении FOV и просматривайте результаты попаданий.

Убедитесь, что вы правильно установили слой столкновений, чтобы трассировка взаимодействовала только с целевым игроком.

Я делаю этона моей мобильной игре с 10-20 актерами в кадре, и она отлично работает.

0 голосов
/ 21 сентября 2018

GetAllActorsOfClass выполняет итерации по хеш-таблице вещей этого класса. Даже с 100 игроками это вряд ли будет очень дорого. Я полагаю, что «получить актеров в frustum» просто сделать это под капотом.

Если вы согласны с его использованием, оттуда вы бы использовали ConvertWorldLocationToScreenLocation и сравнили это с координатами границ экрана с помощью GetViewportSize.

Единственный метод, который не будет использовать GetAllActorsOfClass, который я могу придумать не по себе, - это вычислить размер прямоугольника в «конце» усеченного конуса, используя гигантскую трассировку из нескольких ящиков и фильтрацию на основе точечного произведения. Следы дешевы, точечный продукт дешев. Будет ли он дешевле, чем GetAllActorsOfClass, будет зависеть от вашей игры.

Если производительность действительно является проблемой, лучшим решением будет использование кода. В зависимости от вашей реализации вы можете использовать нативизацию Blueprint, чтобы получить дополнительный импульс, не углубляясь в код.

...