Unity3D 在矩形中查找对象

Unity3D finding object in rectangle

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

我想从以下两个角度来做。绿点是鼠标前后的位置。 对不起,我的英语不好。

假设您有代表每个对象的 GameObjects 的二维数组

objects = new GameObject[sizeX][sizeY];

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

获得两个单击对象的索引后,这两个索引之间的每个对象都是矩形的成员。问题是您不确定循环应该朝哪个方向进行(例如,您单击了第一个对象,然后单击了第五个对象,然后该轴的循环变为 ++,但是如果您单击了第五个,然后单击了第一个,则循环变为 --)。

我们这样判断方向:

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 > y

-x < -y

例如

5 > 3|

-5 < -3