团结,在一个区域内获得随机位置?

时间:2016-10-14 02:15:15

标签: c# unity3d vector spawning

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

A and B areas

1 个答案:

答案 0 :(得分:1)

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

  1. 获取矩形的每个顶点的坐标。
  2. 将蓝色三角形的min x的x坐标和红色三角形的min坐标作为一对。(xminBlue,xminRed)。取红色三角形的max x的x坐标和蓝色三角形的最大坐标作为一对。(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;
    }
    enter image description here
  5. 与4相同以获得y
  6. 的值

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