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
我想获取两点之间(在一个矩形中)的所有对象。它应该是相对于网络,而不是屏幕。如果是矩形,我不想检查游戏中的每个对象。
我想从以下两个角度来做。绿点是鼠标前后的位置。
对不起,我的英语不好。
假设您有代表每个对象的 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