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

Unity, get random position within an area?

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

A and B areas

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

  1. 获取两个矩形的每个顶点的坐标。
  2. 取蓝色三角形的最小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); }别的 { x= Random.Range(xmaxRed,xmaxBlue); } 浮动 GetRatio(浮动 distance_1,浮动 distance_2){ return distance_1 / distance_1 + distance_2;<br> }
  5. 同4得到y的值

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