如下图所示,我想在蓝色区域 (B) 而不是红色区域 (A) 内找到一个随机位置。我怎样才能做到这一点?A 和 B 目前是 2 个对撞机。我只需要 B 内的职位,但不能在 A 内。提前致谢。
问问题
2203 次
1 回答
2
一种解决方案与 Nico Schertler 在评论中提到的相同
- 获取两个矩形的每个顶点的坐标。
- 将蓝色三角形的最小 x 的 x 坐标和红色三角形的最小坐标作为一对。(xminBlue,xminRed)。以红色三角形的max x的x坐标和蓝色三角形的max坐标为一对。(xmaxRed,xmaxBlue)
- 对 Y 坐标执行相同操作并获得 (yminBlue,yminRed) 。(ymaxRed,ymaxBlue)
- 利用
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;
} - 做和 4 一样的操作得到 y 的值
在这个解决方案中,您不需要拒绝任何坐标
于 2016-10-14T04:35:40.327 回答