使用Libgdx游戏引擎做的2D横版过关游戏
#在学习了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横版过关游戏相关推荐
- Unity学习笔记3 简易2D横版RPG游戏制作(三)
这一篇本来应该是在上一篇后面直接补进去的.不过因为排版的问题.所以我就另开一篇来整理了,好了,废话不多说,马上整理: 十八.关卡的锁定与解锁 前面我们已经解决了在游戏开始时可以选择关卡的问题,接下来我 ...
- Unity 4 3 制作一个2D横版射击游戏 2
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 在上一篇 ...
- unity3d游戏2d横版射击游戏完整项目源码分享
unity3d游戏2d横版射击游戏完整项目源码分享 免费下载地址: 链接:https://pan.baidu.com/s/1YwhEy7DeKIHFU8pBLdJFPg 提取码:3wnx 复制这段内容 ...
- Unity 4.3 制作一个2D横版射击游戏(2)
在上一篇<Unity 4.3 制作一个2D横版射击游戏>时,已经完成一个基本的射击游戏了.在这一篇将继续完善. 1.视差卷轴效果 为了达到这种视差卷轴的效果,可以让背景层以不同的速度进行移 ...
- Unity 4 3 制作一个2D横版射击游戏
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 这是一个 ...
- 2D横版摩托游戏源码
这是一款2D横版摩托特技游戏.代码结构和传统写法有些差异,但是效果还算不错. 传统的写法可能会使用box2d引擎,或者至少模拟出一个简单的物理模型,这里代码有点另类,甚至连速度变量都没有,竟然也能做出 ...
- Unity 4.3 制作一个2D横版射击游戏
这是一个横版射击游戏. 教程来自: http://pixelnest.io/tutorials/2d-game-unity/ 中文版教程: http://www.litpo.com/categor ...
- Cocos2D来制作横版过关游戏1
本文实践自 Allen Tan 的文章< How To Make A Side-Scrolling Beat 'Em Up Game Like Scott Pilgrim with Cocos2 ...
- Unity3D横版过关游戏(一)
想用Unity3D做一个横版过关的游戏,类似Mario的. 发现国外有一个很好的教程网站: http://walkerboystudio.com/html/unity_training___free_ ...
- Unity3D开发一个2D横版射击游戏
教程基于http://pixelnest.io/tutorials/2d-game-unity/ , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改 ...
最新文章
- sdut 2401 最大矩形面积
- 基于loudmouth的XMPP客户端DEMO
- html5 input required oninvalid,为什么我的“ oninvalid”属性会让模式失败?
- 多图 | 600岁“网红”的10亿+营收变现(结尾有彩蛋)
- java应用程序中判断用户输入的一个整数是否在已知数组里。
- java第一次课必修实验答案,Java第一次实验报告
- 《Java并发编程的艺术》:第1章 并发编程的挑战
- 章节2:SQL之多表连接
- 「三分钟系列05」3分钟看懂并发与并行
- Vuforia+Unity实现AR效果
- Python错误篇 | UserWarning: findfont: Font family [‘SimHei‘] not found. Falling back to DejaVu Sans.
- 基于MATLAB的路径规划算法
- 201015.阅读和了解什么是形式化方法
- 前端常用的八种数据结构
- 为什么你的有道云笔记越来越不好用?三个细节解决你的烦恼
- mapbox tippecanoe切矢量瓦片参数设置和注意事项
- 看完电视剧“天道“的第一次感想记录
- android 挂断 电话 反射,android 接听和挂断实现方式
- 意能通:一名博士CEO的人工智能创业之旅
- vue 导出excel,合并单元格,修改样式