1

如下图所示,我想在蓝色区域 (B) 而不是红色区域 (A) 内找到一个随机位置。我怎样才能做到这一点?A 和 B 目前是 2 个对撞机。我只需要 B 内的职位,但不能在 A 内。提前致谢。

A区和B区

4

1 回答 1

2

一种解决方案与 Nico Schertler 在评论中提到的相同

  1. 获取两个矩形的每个顶点的坐标。
  2. 将蓝色三角形的最小 x 的 x 坐标和红色三角形的最小坐标作为一对。(xminBlue,xminRed)。以红色三角形的max x的x坐标和蓝色三角形的max坐标为一对。(xmaxRed,xmaxBlue)
  3. 对 Y 坐标执行相同操作并获得 (yminBlue,yminRed) 。(ymaxRed,ymaxBlue)
  4. 利用 if(Random.value < GetRatio(xminBlue-xminRed),xmaxRed-xmaxBlue){ x= Random.Range(xminBlue,xminRed); }else { x= Random.Range(xmaxRed,xmaxBlue); } float GetRatio (float distance_1,float distance_2){ return distance_1 / distance_1 + distance_2;
    }
    在此处输入图像描述
  5. 做和 4 一样的操作得到 y 的值

在这个解决方案中,您不需要拒绝任何坐标

于 2016-10-14T04:35:40.327 回答