Random 使用ALPHA贴图随机放置对象

Random 使用ALPHA贴图随机放置对象,random,procedural,Random,Procedural,我想使用ALPHA贴图随机放置对象(仅黑色,不灰度)。地图上的黑色区域用于确定可以放置对象的位置 我为什么要这样做?例如,我们有一些河流地形。我们想在地形上随机放置一个箱子,重点是我们不想让我们的箱子在河里。我们有一个特殊的位置来放置胸部,这个位置可能有一个非常复杂的结构 湖泊和河流的简单地图: 放置对象位置的黑白地图: 当然,我们可以用random.Range()选取随机点,并通过将其与像素值进行比较来检查每个点:“该点在黑色区域上吗?”但是如果我们的(理论上,您可以按颜色分割alpha贴

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

我为什么要这样做?例如,我们有一些河流地形。我们想在地形上随机放置一个箱子,重点是我们不想让我们的箱子在河里。我们有一个特殊的位置来放置胸部,这个位置可能有一个非常复杂的结构

湖泊和河流的简单地图:

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


当然,我们可以用random.Range()选取随机点,并通过将其与像素值进行比较来检查每个点:“该点在黑色区域上吗?”但是如果我们的(理论上,您可以按颜色分割alpha贴图,以获得区域的几何多边形表示,然后您可以在一组黑白多边形中生成一个点。
但是,如果您愿意用内存换取速度,有一个更简单的解决方案:只需将alpha映射表示为两个数组(黑白)然后从所需的数组中随机选取一个点。

我将分别保留一个黑白版本的贴图进行测试。从这一点开始,您只需检查黑白版本以进行放置测试。