用户移动,根据用户所在区域查找区域内玩家,并更新视线范围内玩家对象列表检并查是否离开或进入视线,如果离开再发送离开周围玩家或添加新的玩家到列表,发送删除或添加的位置更新信息到其他的玩家和回馈给用户。并调用进入视线的事件和离开视线的事件。设想把地图分为若干三角形区域或四边形区域,检查用户位置的所在区域,和用户是否在临近区域边界的视线范围区域。如果用户视线范围所看到的超过了当前区域还要加上用户视线范围内另一区域的所有用户,查找这些区域的用户是否在玩家周围,点和点之间的直线距离是否小于视线距离。比较新的表和旧表差异触发视线事件。效率和往map插入查找过程的效率相同。整个流程并不是需要高度等待,用户发上数据后并不用期待立刻反馈。这些和游戏场景更新有关但处理缓慢也不太容易引起用户的察觉。所以相对于玩家的移动速度更新玩家周围互动对象的数据,如果移动速度远远大于更新速度,可以等待玩家停止移动后按最后一个位置更新互动对象场景。在移动过程当中可以按一定的速率更新部分场景。现实当中快速移动忽略某些场景信息也是正常现象。地图边界算法还有一个简单的方法就是把玩家所在地区周围的地区都提取出来,查找这些地图的所有对象,这样不用计算玩家在地图三角形内位置问题。使用蜂巢形多边形视乎是个好方法。
移动流程
最新推荐文章于 2024-09-22 11:42:19 发布