我正在尝试构建玩家FoV锥体中所有玩家棋子的数组。由于明显的性能原因,我不想不必遍历GetAllActorsofClass。这将在每一刻完成。
答案 0 :(得分:0)
GetAllActorsOfClass遍历该类事物的哈希表。即使有100名玩家,这也不是很昂贵的事情。我可以想象,“让演员陷入困境”只会在幕后做。
如果可以使用它,则可以从那里使用ConvertWorldLocationToScreenLocation,然后使用GetViewportSize将其与屏幕边界坐标进行比较。
我不会想到的唯一不使用GetAllActorsOfClass的方法是使用一个巨大的多框跟踪并基于点积进行过滤,以计算平截头体“端”处矩形的大小。痕迹便宜,点产品便宜。它是否比GetAllActorsOfClass便宜,将取决于您的游戏。
如果性能确实是一个问题,最好的解决方案是使用代码。根据您的实现,您可能可以使用蓝图本地化来获得额外的提升,而无需深入研究代码。
答案 1 :(得分:0)
使用MultiSphereTrace从玩家到他的FOV方向,并在命中结果之间循环。
确保正确设置碰撞层,以便轨迹仅与目标玩家互动。
我在手机游戏中这样做,每帧大约有10-20个演员,而且效果很好。