3

我想使用 ALPHA MAP 随机放置对象(只有黑色,不是灰度)。地图上的黑色区域用于确定我们可以放置对象的位置。

我为什么要这样做?例如,我们有一些带河流的地形。我们想在那个地形上随机放置一个箱子,关键是我们不希望我们的箱子在河里。我们有一个特殊的位置来放置那个箱子,这个位置可以有一个非常复杂的结构。

带有湖泊和河流的简单地图:

带有湖泊和河流图像的简单地图链接

放置对象位置的黑白地图:

用于放置对象图像的位置的黑白地图的链接

当然,我们可以使用 Random.Range() 获取随机点,并通过将其与像素值进行比较来检查每个点:“该点在黑色区域上吗?” 但是,如果我们有一个非常小(< 总面积的 10%)和复杂的“可用”区域(例如,沼泽中的岛屿),那么将会有大量的“垃圾”点。因此,这是一种非常低效的方法。

是否存在快速和性能技术来获得所需数量的“可用”点?

4

1 回答 1

2

理论上,您可以按颜色分割 alpha 地图以获得区域的几何多边形表示,然后您可以通过算法在一组黑色/白色多边形内生成一个点。但是如果你愿意用内存换取速度,有一个更简单的解决方案:只需将 alpha 映射表示为像素坐标的两个数组(黑色和白色),然后从所需的数组中随机选择一个点。

于 2016-03-14T17:01:29.550 回答