如何在CraftyJS游戏中为LARGE世界动态构建地图

时间:2013-12-10 22:45:38

标签: craftyjs

我刚开始使用Crafty并正在构建基于本教程的游戏: http://buildnewgames.com/introduction-to-crafty/

然而,我的游戏最终会有一个非常大的世界,我只想加载玩家当前位置所需的地图。有没有人知道用Crafty做这个的任何例子?

(我正在慢慢地通过api文档,但还没有找到任何有启发性的东西 - 我希望找到某种内置功能......)

我特别想要的是Crafty代码 1)当玩家在地图边缘附近移动时滚动地图 2)动态更改地图

我对如何做到这一点有一些想法,但没有一个是有吸引力的,所以我真的希望这是一个已经解决的问题......

谢谢, Aerik

1 个答案:

答案 0 :(得分:1)

关于图书馆的问题,我认为你最好

https://groups.google.com/forum/#!forum/craftyjs

您也可以搜索它以查找问题的现有答案。

在这里解释其中一个答案:您可以将地图分成几个部分,每个部分至少与屏幕一样大。确保始终创建播放器所在的部分及其周围的部分。一旦你移动到一个相邻的部分,你就会摧毁三个旧的部分并创建三个新部分,以便玩家再次位于中心。

您如何进行簿记取决于您。我能想到的一种方法是给所有动态加载的实体一个组件来识别它们在某个地图区域上(Crafty.e(" MapRegionIndexX" + mapX +" Y" + mapY))并存储这些组件与2D阵列中3x3区域相关的方式。移动到新区域后,您可以通过调用Crafty删除旧区域(" MapRegionIndex将被删除")。each(function(){this.destroy()});

关于靠近边缘移动时的滚动问题,Crafty可以自动将视口居中于播放器(检查API),Crafty.viewport中的功能。您可以使用函数follow,pan,scroll,x和/或y来实现您想要的效果。