在上一篇文章中,我们获得了完整的游戏角色。 他能正常工作,有一些自己的特色,但还有另一个显著的问题。 我们现在的游戏少了一个世界。
1 .逻辑分析抛开其他车轮不谈,我们设计的地图,我们需要用实体和ui生成的方法,按照自己定制的数据结构,也许是二维排列,自己生成可以表示的世界。 但是,很明显,这种二维数组的可读取性会恶化。 这里需要便于部署FXGL的一点,即可以支持tmx文件格式的地图导入。
首先需要下载地图编辑器
你可以在这里下载mapedit
下载完成后,需要地图资源文件。 这些都可以下载到网上。
拥有使用ps等软件基础的学生可以很容易地使用这个制造商。
简单地画点什么~这里重点介绍图层的问题。 根据图层的不同,这个很清楚。 上层覆盖下层的东西。对象层也是图层的一种,而且尤其重要。
地图中有很多块,但这些块最终会合并为一张image图像并渲染到游戏中。 如果要实现特定块具有特殊操作、特定块无法通过等问题,则必须添加obj对象。 在加载项目时,这些对象的类型将从游戏引擎中的物理工厂中查找并添加到游戏世界中。
2 .整个代码实践的代码实现很简单,首先我们将把wall对象添加到现在最早的工厂
GameEntityFactory.java
@spawns(wall ) (publicentitynewwall ) spawndatadata ) (entitybuild=fxgl.entitybuilder ) )。 bbox(newhitbox ) bounding shape.box (data.integerget (' width ',data.integer get ) ' height ' ) ) return build; }然后在APP的init阶段注入这个工厂
@Override protected void initGame () { FXGL.getGameWorld ) ).addentityfactory (newgameeentityfactory ) ); //如何加载贴图setLevel (; entity entity=customerentityfactory.create entity (entity type.plane ); //视角固定视角FXGL.getGameWorld ().addentity ) ); viewport viewport=fxgl.getgamescene ().getViewport; viewport.setbounds(-10000、- 10000、250 * 70、10000 ); viewport.bindtoentity(entity,FXGL.getAppWidth )/2,FXGL.getAppHeight )/2 ); }然后是加载地图的方法
privatevoidsetlevel((/首先是所有实体FXGL.getGameWorld ).getEntitiesCopy ).foreach(t-t.removefromworld ) ); //加载贴图fxgl.setlevelfrommap (tmx/obj _ test.tmx ); 试着开车吧。 好啊。
当然,这还是一个简单的游戏框架,但现在可以制作简单的RPG游戏了。
这是本期的git代码
返回到主目录