【发布时间】:2015-11-13 14:39:54
【问题描述】:
【问题讨论】:
【问题讨论】:
假设您有代表每个对象的二维游戏对象数组
objects = new GameObject[sizeX][sizeY];
然后你需要获取两个被点击对象的索引(不确定你想如何确定这一点,你可以为每个对象制作一堆碰撞器,然后使用 OnMouseDown 和光线投射,或者 Unity 的内置检查对象是否是单击,或仅根据鼠标位置和对象所在位置的硬编码值确定单击了哪个对象。
获得两个单击对象的索引后,这两个索引之间的每个对象都是矩形的成员。问题是您不确定循环应该朝哪个方向前进(例如,您单击第一个对象,然后单击第 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
-x
例如。
5 > 3|
-5
【讨论】: