0

所附图像是游戏的“可行走空间”蒙版,由玩家绘制,因此可以是任何东西。我需要创建碰撞器来防止玩家走到面具的蓝色部分(水)。游戏本身在 3D 空间中,蒙版用于地形纹理(虚幻引擎 4)。

我现在所做的是将纹理的大小从 2048x2048 减小到 256x256,并在 3D 空间中为蒙版中的每个蓝色像素创建一个碰撞器。这适用于少量蓝色像素,但如果有很多蓝色像素(水),它就不会很好/根本无法正常工作。会有太多的对撞机在飞行中产生。

所以我想唯一的其他选择是找到构成图像中任意数量凹形边界的点。我将使用它创建墙壁对撞机。

希望这是有道理的。很感谢任何形式的帮助。

谢谢在此处输入图像描述

4

1 回答 1

1

将大小减小到更小后,用零和一填充一个布尔数组,有蓝色的地方,没有蓝色的地方。从那里你可以把所有没有零邻居的人都变成零。那是因为如果一个单元格没有空的邻居并且它本身也不是空的,那么没有任何物体可以与它发生碰撞并且您不需要检查。这应该会大大提高性能,但如果您需要更多,您可以找到所有填充单元格的直线并检查与这些直线的碰撞。所以它看起来像这样:

在此处输入图像描述

在这种情况下,您最终必须检查与 6 个对象而不是 18 个对象的碰撞,并且随着 blob 变大,差异会越来越大。

于 2016-07-18T12:56:19.123 回答