#在学习了Libgdx这款引擎后,通过下载一些游戏素材,花费2个月的时间,做了一个2D横版过关游戏
在这里我写一下我自己踩过的坑

地图篇


iibgdx可以解析Tiled这个软件生成的地图文件,地图文件是xx.tmx文件

TiledMap map ; //地图
OrthoCachedTiledMapRenderer OtRender; //地图绘制类
OrthographicCamera camera; //相机
这3个类联合处理,才让tmx中的地图信息展示到屏幕中
TiledMap 获取xx.tmx中的信息
OrthoCachedTiledMapRenderer 对地图信息进行渲染
OrthographicCamera 显示地图部分信息。

地图初始化方法如下

public void setMap(String map1) {

 MyR.OFF_X = 0;map = new TmxMapLoader().load(map1);//      创建相机camera = new OrthographicCamera();//       创建地图绘制期Render = new OrthoCachedTiledMapRenderer(map);TiledMapTileLayer  laryer = (TiledMapTileLayer )map.getLayers().get("pz");//单个图块大小mapHeight = laryer.getHeight() *laryer.getTileHeight();mapWidth = laryer.getWidth()*laryer.getTileWidth();pz = new int[laryer.getWidth()][laryer.getHeight()];//          设置相机显示大小camera.setToOrtho(false, 480, 256);//           遍历图层中的图块位置for(int i=0;i<pz.length;i++) {for(int j=0;j<pz[i].length;j++) {if(laryer.getCell(i, j) !=null) {pz[i][j] = 1;}}}createObj();
}

在使用map地图时,地图的方块默认是在最前面。
对此我找了很多方法都没办法改变位置
最后我将其放置在另一个舞台界面 这个舞台被我称为地图舞台,在主舞台之前。

map.getLayers().get(“obj”).getObjects(); 获得地图中该名称的对象层对象集合

public void createObj() {

 MapObjects objs =map.getLayers().get("obj").getObjects();for(MapObject obj: objs) {System.out.println(obj.getName());if(obj.getName() == null)continue;if(obj.getName().equals("main")) {main.getMyAc().setX((int)Double.parseDouble(obj.getProperties().get("x").toString()));main.getMyAc().setY((int)Double.parseDouble(obj.getProperties().get("y").toString()));}else if(obj.getName().equals("fei")) {FlyingActor flying = new FlyingActor();flying.setGame(game);flying.setPosition((int)Double.parseDouble(obj.getProperties().get("x").toString()) ,(int)Double.parseDouble(obj.getProperties().get("y").toString()));flying.setDistance((int)Double.parseDouble(obj.getProperties().get("dis").toString()));flying.setMyOrigin((int) (flying.getX()+flying.getWidth()/2));flying.setScale(0.2f);flying.setLife(5);main.addActor(flying);main.getDirList().add(flying);}else if(obj.getName().equals("js")) {Zombie zom = new Zombie();zom.setGame(game);zom.setActor(main.getMyAc());zom.setPosition((int)Double.parseDouble(obj.getProperties().get("x").toString()) ,(int)Double.parseDouble(obj.getProperties().get("y").toString()));zom.setDistance((int)Double.parseDouble(obj.getProperties().get("dis").toString()));zom.setScale(0.4f);zom.setLife(3);main.addActor(zom);main.getDirList().add(zom);}else if(obj.getName().equals("door")) {DoorActor door = new DoorActor(game);door.setX((int)Double.parseDouble(obj.getProperties().get("x").toString()));door.setY((int)Double.parseDouble(obj.getProperties().get("y").toString()));door.setWidth((int)Double.parseDouble(obj.getProperties().get("width").toString()));door.setHeight((int)Double.parseDouble(obj.getProperties().get("height").toString()));door.setFloor(obj.getProperties().get("floor").toString());main.addActor(door);main.setDoor(door);}else if(obj.getName().equals("boos")) {int che = (int)((int)Double.parseDouble(obj.getProperties().get("Checkpoint").toString()));BossDao boss= BossFactory.getBoss(che,game);boss.setX((int)Double.parseDouble(obj.getProperties().get("x").toString()));boss.setY((int)Double.parseDouble(obj.getProperties().get("y").toString()));boss.setWidth((int)Double.parseDouble(obj.getProperties().get("width").toString()));boss.setHeight((int)Double.parseDouble(obj.getProperties().get("height").toString()));boss.setLife(20);main.addActor(boss);main.setBoss(boss);}else if(obj.getName().equals("cattle")) {int x  = (int)Double.parseDouble(obj.getProperties().get("x").toString());int y  = (int)Double.parseDouble(obj.getProperties().get("y").toString());Cattle cattle = new Cattle(game,pz,x,y);main.addActor(cattle);main.getDirList().add(cattle);}else if(obj.getName().equals("elevator")) {float x =(float)Double.parseDouble(obj.getProperties().get("x").toString());float y =(float)Double.parseDouble(obj.getProperties().get("y").toString());float width =(float)Double.parseDouble(obj.getProperties().get("width").toString());float height =(float)Double.parseDouble(obj.getProperties().get("height").toString());String move  = obj.getProperties().get("move").toString();float distance = (float)Double.parseDouble(obj.getProperties().get("distance").toString());float seed = (float)Double.parseDouble(obj.getProperties().get("seed").toString());ElevatorActor elvator = new ElevatorActor(game, move, x, y, width, height, distance,seed);main.getElevActor().add(elvator);main.addActor(elvator);}}


截图中的飞虫和光环都是通过地图中的对象层来设置位置

源码下载:https://download.csdn.net/download/qq_36458701/13088174

使用Libgdx游戏引擎做的2D横版过关游戏相关推荐

  1. Unity学习笔记3 简易2D横版RPG游戏制作(三)

    这一篇本来应该是在上一篇后面直接补进去的.不过因为排版的问题.所以我就另开一篇来整理了,好了,废话不多说,马上整理: 十八.关卡的锁定与解锁 前面我们已经解决了在游戏开始时可以选择关卡的问题,接下来我 ...

  2. Unity 4 3 制作一个2D横版射击游戏 2

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...

  3. unity3d游戏2d横版射击游戏完整项目源码分享

    unity3d游戏2d横版射击游戏完整项目源码分享 免费下载地址: 链接:https://pan.baidu.com/s/1YwhEy7DeKIHFU8pBLdJFPg 提取码:3wnx 复制这段内容 ...

  4. Unity 4.3 制作一个2D横版射击游戏(2)

    在上一篇<Unity 4.3 制作一个2D横版射击游戏>时,已经完成一个基本的射击游戏了.在这一篇将继续完善. 1.视差卷轴效果 为了达到这种视差卷轴的效果,可以让背景层以不同的速度进行移 ...

  5. Unity 4 3 制作一个2D横版射击游戏

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这是一个 ...

  6. 2D横版摩托游戏源码

    这是一款2D横版摩托特技游戏.代码结构和传统写法有些差异,但是效果还算不错. 传统的写法可能会使用box2d引擎,或者至少模拟出一个简单的物理模型,这里代码有点另类,甚至连速度变量都没有,竟然也能做出 ...

  7. Unity 4.3 制作一个2D横版射击游戏

    这是一个横版射击游戏. 教程来自: http://pixelnest.io/tutorials/2d-game-unity/   中文版教程: http://www.litpo.com/categor ...

  8. Cocos2D来制作横版过关游戏1

    本文实践自 Allen Tan 的文章< How To Make A Side-Scrolling Beat 'Em Up Game Like Scott Pilgrim with Cocos2 ...

  9. Unity3D横版过关游戏(一)

    想用Unity3D做一个横版过关的游戏,类似Mario的. 发现国外有一个很好的教程网站: http://walkerboystudio.com/html/unity_training___free_ ...

  10. Unity3D开发一个2D横版射击游戏

    教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改 ...

最新文章

  1. sdut 2401 最大矩形面积
  2. 基于loudmouth的XMPP客户端DEMO
  3. html5 input required oninvalid,为什么我的“ oninvalid”属性会让模式失败?
  4. 多图 | 600岁“网红”的10亿+营收变现(结尾有彩蛋)
  5. java应用程序中判断用户输入的一个整数是否在已知数组里。
  6. java第一次课必修实验答案,Java第一次实验报告
  7. 《Java并发编程的艺术》:第1章 并发编程的挑战
  8. 章节2:SQL之多表连接
  9. 「三分钟系列05」3分钟看懂并发与并行
  10. Vuforia+Unity实现AR效果
  11. Python错误篇 | UserWarning: findfont: Font family [‘SimHei‘] not found. Falling back to DejaVu Sans.
  12. 基于MATLAB的路径规划算法
  13. 201015.阅读和了解什么是形式化方法
  14. 前端常用的八种数据结构
  15. 为什么你的有道云笔记越来越不好用?三个细节解决你的烦恼
  16. mapbox tippecanoe切矢量瓦片参数设置和注意事项
  17. 看完电视剧“天道“的第一次感想记录
  18. android 挂断 电话 反射,android  接听和挂断实现方式
  19. 意能通:一名博士CEO的人工智能创业之旅
  20. vue 导出excel,合并单元格,修改样式

热门文章

  1. linux下大文件分割
  2. Java 使用POI 给Word添加水印
  3. javascript网页特效(一)
  4. 人工智能原理(学习笔记)
  5. 树莓派4b 3.5inch显示屏+远程+FTP+建站
  6. vue 通过localStorage添加商品到购物车
  7. [树形DP]贪吃的九头龙
  8. win10动态壁纸怎么设置_技术贴,安卓手机如何设置类似iPhone的炫酷动态壁纸
  9. 华为S5700交换机登录认证配置学习笔记
  10. hdu 5467 Clarke and hunger games (lct)