当用户选择一个对象(正文)时,我想搜索连接到正文的所有其他相同类型的对象。
例如,如果用户选择类型为2的对象。我想检查用户选择的对象旁边的对象,以检查它是否为类型2并在所有方向上执行此操作。向上,跨越等。
并继续前进,直到它没有更多类型的类型2。
有谁知道我怎么能这样做?
我知道我可以使用body.setUserData()来设置正文类型并查看它是什么。
任何想法?
答案 0 :(得分:1)
首先是所有人。对于使用box2d进行Match-3-Game游戏而言,物理技术实在是太过分了。
其次是所有人。我建议你使用 bidimensional Array 。这样你可以用以下方法检查最近的对象:
array[x][y+1].type==type
例如。
你需要制作一个递归方法来检查每个方向。
public void getCandiesIMeanObjects(int i, int j, int type){
if(array[i][j].type == type){
objects.add(array[i][j]);
if(i-1>=0) getCandiesIMeanObjects(i-1, j, type);
if(i+1<gridwidth) getCandiesIMeanObjects(i+1, j, type);
if(j-1>=0) getCandiesIMeanObjects(i, j-1, type);
if(j+1<gridheight) getCandiesIMeanObjects(i, j+1, type);
}
}
使用点击/移动的一个启动它:
getCandiesIMeanObjects(object.gridx, object.gridy, object.type);
(所有使用的字段应该是自我解释的,但是:对象是一个数组,gridwidth / height是电路板大小,类型是类型...(int,enum,你称之为),object.gridx / y是网格中对象的位置)