团结,在一个区域内获得随机位置?
Unity, get random position within an area?
如下图所示,我想在蓝色区域 (B) 而不是红色区域 (A) 内找到一个随机位置。我怎样才能做到这一点? A和B目前是2个对撞机。我只需要 B 内的职位,但不能在 A 内。提前致谢。
A and B areas
一个解决方案与 Nico Schertler 在评论中提到的相同
- 获取两个矩形的每个顶点的坐标。
- 取蓝色三角形的最小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);
}别的
{
x= Random.Range(xmaxRed,xmaxBlue);
}
浮动 GetRatio(浮动 distance_1,浮动 distance_2){
return distance_1 / distance_1 + distance_2;<br>
}
- 同4得到y的值
在此解决方案中,您不需要拒绝任何坐标
如下图所示,我想在蓝色区域 (B) 而不是红色区域 (A) 内找到一个随机位置。我怎样才能做到这一点? A和B目前是2个对撞机。我只需要 B 内的职位,但不能在 A 内。提前致谢。
A and B areas
一个解决方案与 Nico Schertler 在评论中提到的相同
- 获取两个矩形的每个顶点的坐标。
- 取蓝色三角形的最小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); }别的 { x= Random.Range(xmaxRed,xmaxBlue); } 浮动 GetRatio(浮动 distance_1,浮动 distance_2){ return distance_1 / distance_1 + distance_2;<br> }
- 同4得到y的值
在此解决方案中,您不需要拒绝任何坐标