我有一堆物品(气球),它们向上移动并撞到屋顶(即object.yPos <= 0),停止运动。跟随它们的气球会撞到现有气球并停止运动。现在,我射击气球并删除被击中的气球...如果它们已经在底部,则很容易。但是,如果支撑它们的锚点被打中并且被删除,我还必须删除那些仍然悬挂的气球,也就是说,它们不再连接到屋顶或任何其他气球。与此相关,我的Balloon对象有以下支持方法:
balloon.getAdjacentList() -> 返回附加到气球的所有气球的ArrayList
balloon.getX() -> 返回气球的X位置
balloon.getY() -> 返回气球的Y位置
我能想到的检测“悬挂在空中”的气球的一种方法是使用DFS或BFS进行“图遍历”,其中原点将是被击中(并删除)的所有相邻球,目标将是...如果任何相邻的球(或“相邻的相邻”球或“相邻的相邻的相邻”等)具有getY()<=0,即找到通向屋顶的路径。
这个检查似乎非常昂贵,特别是当我必须运行数十次搜索来删除一两个悬挂的球时。还要记住,在理论上,一个气球可能连接许多其他气球,仍然具有其锚点(支撑它们全部到达屋顶)被打中并且被删除,因此它们全部都必须离开......所以...如果(getAdjacent().size()==0)将不起作用。
1- 有更好的想法吗?这似乎很容易想象,并在许多游戏中实现了吗? 2- 是否有任何支持方法可以帮助我检测气球?
提前感谢您的帮助。
balloon.getAdjacentList() -> 返回附加到气球的所有气球的ArrayList
balloon.getX() -> 返回气球的X位置
balloon.getY() -> 返回气球的Y位置
我能想到的检测“悬挂在空中”的气球的一种方法是使用DFS或BFS进行“图遍历”,其中原点将是被击中(并删除)的所有相邻球,目标将是...如果任何相邻的球(或“相邻的相邻”球或“相邻的相邻的相邻”等)具有getY()<=0,即找到通向屋顶的路径。
这个检查似乎非常昂贵,特别是当我必须运行数十次搜索来删除一两个悬挂的球时。还要记住,在理论上,一个气球可能连接许多其他气球,仍然具有其锚点(支撑它们全部到达屋顶)被打中并且被删除,因此它们全部都必须离开......所以...如果(getAdjacent().size()==0)将不起作用。
1- 有更好的想法吗?这似乎很容易想象,并在许多游戏中实现了吗? 2- 是否有任何支持方法可以帮助我检测气球?
提前感谢您的帮助。