敌人渲染

时间:2019-03-02 20:58:22

标签: java rendering

我正在创建“平铺游戏” enter image description here

我想问的问题是:假设我的地图将是5000 * 5000瓦片,并且正如您所看到的,我已经在那里遇到了一些敌人(两个红色的堆石泥:D),问题是我会希望每500个瓦片有1个敌人,所以5000 * 5000/500会导致大约50000个敌人,无法一次渲染,所以我有一个矩形对象,它可以容纳玩家可以看到的实际屏幕,以及“ “粘液”与矩形相交,然后用Im渲染它,但问题是我仍然必须遍历每个粘液,以查看玩家移动后它们的点击框是否在屏幕矩形中,是否有人遇到过类似的问题?如果可以,您能告诉我您的解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

但是问题是我仍然必须遍历每一个   粘液以查看它们的点击框是否在屏幕矩形之后   玩家移动了,

在玩家移动时在一些粘液中循环是正常的或可以接受的,但是在所有粘液中循环是不可行的。
您可能应该维护一个结构,以便知道每个图块区域中存在的敌人。
  瓷砖区域应收集一定数量的瓷砖,但要注意,您应该找到/调整其尺寸,以使其不会太小(因为您必须检查许多瓷砖而对它失去了兴趣)而又不能太大(您将循环播放)许多敌人,可能距离太远)。

总体思路是,仅检查玩家是否靠近瓷砖区域,检查敌人的存在。诸如Map<TilesZone, List<Enemy>>之类的结构可能很有意义,或者可能TreeMap<TilesZone, List<Enemy>>受益于NavigableMap接口,这可能对您的用例很有帮助。