Unity3D在矩形中查找对象

时间:2015-11-12 20:02:39

标签: unity3d cursor

我希望获得两点之间的所有对象(在矩形中)。它应该是相对于网络,而不是屏幕。如果是矩形,我不想检查游戏中的每个对象。

我想在下面的两个视角中做些什么。绿点是前后的鼠标位置。 对不起,我的英语不好。 enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

假设你有两个代表每个对象的GameObjects数组

objects = new GameObject[sizeX][sizeY];

然后你需要得到两个被点击对象的索引(不知道你想如何确定这个,你可以为每个对象制作一堆对撞机然后使用OnMouseDown和光线投射,或者Unity的内置检查是否对象是单击,或者根据鼠标位置和对象所在的硬编码值确定单击哪个对象。

获取两个单击对象的索引后,这两个索引之间的每个对象都是矩形的成员。问题是你不确定循环应该朝哪个方向运行(例如,你点击第一个对象然后第五个对象和该轴的循环变为++,但是如果你点击第5个然后第一个然后循环进入 - )。 / p>

我们确定这样的方向:

int indexX1;
int indexY1;
int indexX2;
int indexY2;
int dirX;
int dirY;

if(indexX1 > indexX2) dirX = 1; else dirX = -1;
if(indexY1 > indexY2) dirY = 1; else dirY = -1;

for(int i = indexX1; i * dirX < indexX2 * dirX; i+=dirX){
   for(int j = indexY1; i * dirY < indexY2 * dirY; i+=dirY){
      //your code goes here
   }
}

dir的这个东西因为数学术语而起作用:

x&gt; ÿ

-x&lt; -y

例如

5&gt; 3 |

-5&lt; -3