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