2015-11-12 4 views
0

Я хочу получить все объекты между двумя точками (в прямоугольнике). Он должен относиться к сети, а не к экрану. Я не хочу проверять каждый объект в игре, если он находится в прямоугольнике.Unity3D поиск объекта в прямоугольнике

Что я хочу сделать в двух аспектах ниже. Зеленые точки - это положение мыши до и после. Извините за мой плохой английский. enter image description here enter image description here

ответ

1

Давайте предположим, что у вас есть 2D массив геймобжекты, которые представляют каждый объект

objects = new GameObject[sizeX][sizeY]; 

Затем вам нужно будет получить индексы двух щелкнули объекта (не знаю, как вы хотите, чтобы определить это, вы можете сделать кучу коллайдеров для каждого объекта, затем использовать OnMouseDown и raycasting, или Unity, встроенный в проверку, если объект щелкнул, или просто определить, на какой объект щелкнут, на основе положения мыши и жестко закодированных значений, где находятся объекты).

После того, как вы получите индексы для двух щелкнутых объектов, каждый объект между этими двумя индексами является членом прямоугольника. Проблема в том, что вы не уверены, в каком направлении должен идти цикл (например, вы нажали 1-й объект, затем 5-й объект и цикл для этой оси идут ++, но если вы нажмете 5-й, а затем 1-й, тогда цикл пройдет -).

Мы определяем направление, как это:

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

например.

5> 3 |

-5 < -3

+0

Но самая большая проблема в том, что я должен проверить положение каждого объекта в игре все время, я хочу, чтобы нарисовать прямоугольник так:/Может быть, я должен делить мир на куски или что-то, поэтому проверка всего не будет необходимой. – Konowy

Смежные вопросы