游戏场景管理

来源:互联网 发布:淘宝联盟看不到高佣金 编辑:程序博客网 时间:2024/05/21 08:45
先说明几个问题
1) 地图是原点是在左上角(0,0),从左向右是X轴的递增,从上到下是Y的递增。
2) 根据ZONE的大小把整张地图分割为一个个相连的ZONE,大小根据需求定,我们定为600*400(客户端最大屏幕 1600 * 900)
3) 分完之后地图就是这个样子了(每个数子就是一个ZONE,9宫格的一个格子)
    0    1    2    3
    4    5    6    7
    8    9    10    11
  
4) 根据人物的坐标和ZONE的大小,就可以算出人物是在哪个格子里。
一个人物出现在地图上,把人物的obj加到所在的ZONE里,同时给附近9个格子的人广播addplayer。
比如人物出现在6,那么1,2,3,5,6,7,9,10,11里的人物就会收到广播包,人物进入他们的视野。
人物移动时,如果人物从一个ZONE跑到了另一个ZONE,把人物的obj移到另外一个ZONE了,同时
给那些离开他们视野发生deleteplayer,给进入他们视野的人addplayer,当然,那些重合的ZONE就不需处理了。
因为地图上每个ZONE都保存着进入的obj,所以广播时直接可以拿到这些obj。