我想问的问题是:假设我的地图将是5000 * 5000瓦片,并且正如您所看到的,我已经在那里遇到了一些敌人(两个红色的堆石泥:D),问题是我会希望每500个瓦片有1个敌人,所以5000 * 5000/500会导致大约50000个敌人,无法一次渲染,所以我有一个矩形对象,它可以容纳玩家可以看到的实际屏幕,以及“ “粘液”与矩形相交,然后用Im渲染它,但问题是我仍然必须遍历每个粘液,以查看玩家移动后它们的点击框是否在屏幕矩形中,是否有人遇到过类似的问题?如果可以,您能告诉我您的解决方案吗?
答案 0 :(得分:1)
但是问题是我仍然必须遍历每一个 粘液以查看它们的点击框是否在屏幕矩形之后 玩家移动了,
在玩家移动时在一些粘液中循环是正常的或可以接受的,但是在所有粘液中循环是不可行的。
您可能应该维护一个结构,以便知道每个图块区域中存在的敌人。
瓷砖区域应收集一定数量的瓷砖,但要注意,您应该找到/调整其尺寸,以使其不会太小(因为您必须检查许多瓷砖而对它失去了兴趣)而又不能太大(您将循环播放)许多敌人,可能距离太远)。
总体思路是,仅检查玩家是否靠近瓷砖区域,检查敌人的存在。诸如Map<TilesZone, List<Enemy>>
之类的结构可能很有意义,或者可能TreeMap<TilesZone, List<Enemy>>
受益于NavigableMap
接口,这可能对您的用例很有帮助。