开始学习android游戏开发也有一段时间了,挑选libgdx这个游戏引擎来进行学习和开发。Libgdx是一款支持2D与3D游戏开发的游戏类库,并且它是夸平台的。例如你可以在windos下开发,同样的代码也可以运行在android上。
  刚开始学习这个游戏引擎可能会感觉无从下手,从看该引擎作者提供的DEMO 然后仿照写是个不错的方法。从SVN地址:http://libgdx.googlecode.com/svn/trumk 下载到 cuboc 这个例子。打开后有两个项目 一个是cuboc 一个是cuboc-android,其实我们发现 这两个项目是关联的cuboc-android 用的也是cuboc里的代码。
  运行游戏后是一个类似采蘑菇的游戏,下面我们看下cuboc-android\assets\data下的资源文件是如何在代码中使用,怎么构建的整个游戏屏幕的
  打开com.badlogic.cubocy.screens 这个包,下面定义了几个屏幕类,其中GameScreen 就是游戏主屏幕了。用到了Map MapRenderer OnscreenControlRenderer 这三个类。
  我们先看下 Map,用到了data/levels.png 这张图片,这是一个地图模型,游戏地图就是根据这个绘制的,黑色部分就是通道,还有红色的(0xff0000)复活点 出口(0xff00ff)等等,Map ()构造函数中 根据判断某个像素点的 rgp 在该位置 生成相关的东西。
  接着是MapRenderer,这是是地图的渲染类。下面的代码是加载资源,生成相关的动画。 在libgdx 的图片长宽必须是2的整次幂,不然会报错。可以用http://zwoptexapp.com/flashversion 这个网站快速的把图片生成这样的尺寸

Java代码

  1. // 获取资源 生成动画
  2. private void createAnimations() {
  3. // 地图的方块单元 取tile.png的 20 ,20
  4. this.tile = new TextureRegion(new Texture(
  5. Gdx.files.internal("data/tile.png")), 0, 0, 20, 20);
  6. // 载入 资源图片 主角动作分解图 等效果资源
  7. Texture bobTexture = new Texture(Gdx.files.internal("data/bob.png"));
  8. // [0] 表示只取第一行
  9. TextureRegion[] split = new TextureRegion(bobTexture).split(20, 20)[0];
  10. // 镜子 做一个翻转 区分 左移 还是右移
  11. TextureRegion[] mirror = new TextureRegion(bobTexture).split(20, 20)[0];
  12. for (TextureRegion region : mirror)
  13. region.flip(true, false);// 只根据X轴翻转
  14. // 找到第六个 钉子的资源
  15. spikes = split[5];
  16. bobRight = new Animation(0.1f, split[0], split[1]);
  17. bobLeft = new Animation(0.1f, mirror[0], mirror[1]);
  18. bobJumpRight = new Animation(0.1f, split[2], split[3]);
  19. bobJumpLeft = new Animation(0.1f, mirror[2], mirror[3]);
  20. bobIdleRight = new Animation(0.5f, split[0], split[4]);
  21. bobIdleLeft = new Animation(0.5f, mirror[0], mirror[4]);
  22. bobDead = new Animation(0.2f, split[0]);
  23. // 第二行得资源
  24. split = new TextureRegion(bobTexture).split(20, 20)[1];
  25. // 立方体的资源
  26. cube = split[0];
  27. // 立方体 固定时的动画
  28. cubeFixed = new Animation(1, split[1], split[2], split[3], split[4],
  29. split[5]);
  30. // 第三行
  31. split = new TextureRegion(bobTexture).split(20, 20)[2];
  32. // 立方体 受控制时的资源
  33. cubeControlled = split[0];
  34. // 主角重生动画
  35. spawn = new Animation(0.1f, split[4], split[3], split[2], split[1]);
  36. // 主角死亡动画
  37. dying = new Animation(0.1f, split[1], split[2], split[3], split[4]);
  38. // 重生点
  39. dispenser = split[5];
  40. split = new TextureRegion(bobTexture).split(20, 20)[3];
  41. // 火箭动画
  42. rocket = new Animation(0.1f, split[0], split[1], split[2], split[3]);
  43. // 火箭诞生点
  44. rocketPad = split[4];
  45. split = new TextureRegion(bobTexture).split(20, 20)[4];
  46. // 爆炸动画
  47. rocketExplosion = new Animation(0.1f, split[0], split[1], split[2],
  48. split[3], split[4], split[5]);
  49. split = new TextureRegion(bobTexture).split(20, 20)[5];
  50. // 出口
  51. endDoor = split[2];
  52. // 移动的钉子
  53. movingSpikes = split[0];
  54. // 激光
  55. laser = split[1];
  56. }

// 获取资源 生成动画 private void createAnimations() { // 地图的方块单元 取tile.png的 20 ,20 this.tile = new TextureRegion(new Texture( Gdx.files.internal("data/tile.png")), 0, 0, 20, 20); // 载入 资源图片 主角动作分解图 等效果资源 Texture bobTexture = new Texture(Gdx.files.internal("data/bob.png")); // [0] 表示只取第一行 TextureRegion[] split = new TextureRegion(bobTexture).split(20, 20)[0]; // 镜子 做一个翻转 区分 左移 还是右移 TextureRegion[] mirror = new TextureRegion(bobTexture).split(20, 20)[0]; for (TextureRegion region : mirror) region.flip(true, false);// 只根据X轴翻转 // 找到第六个 钉子的资源 spikes = split[5]; bobRight = new Animation(0.1f, split[0], split[1]); bobLeft = new Animation(0.1f, mirror[0], mirror[1]); bobJumpRight = new Animation(0.1f, split[2], split[3]); bobJumpLeft = new Animation(0.1f, mirror[2], mirror[3]); bobIdleRight = new Animation(0.5f, split[0], split[4]); bobIdleLeft = new Animation(0.5f, mirror[0], mirror[4]); bobDead = new Animation(0.2f, split[0]); // 第二行得资源 split = new TextureRegion(bobTexture).split(20, 20)[1]; // 立方体的资源 cube = split[0]; // 立方体 固定时的动画 cubeFixed = new Animation(1, split[1], split[2], split[3], split[4], split[5]); // 第三行 split = new TextureRegion(bobTexture).split(20, 20)[2]; // 立方体 受控制时的资源 cubeControlled = split[0]; // 主角重生动画 spawn = new Animation(0.1f, split[4], split[3], split[2], split[1]); // 主角死亡动画 dying = new Animation(0.1f, split[1], split[2], split[3], split[4]); // 重生点 dispenser = split[5]; split = new TextureRegion(bobTexture).split(20, 20)[3]; // 火箭动画 rocket = new Animation(0.1f, split[0], split[1], split[2], split[3]); // 火箭诞生点 rocketPad = split[4]; split = new TextureRegion(bobTexture).split(20, 20)[4]; // 爆炸动画 rocketExplosion = new Animation(0.1f, split[0], split[1], split[2], split[3], split[4], split[5]); split = new TextureRegion(bobTexture).split(20, 20)[5]; // 出口 endDoor = split[2]; // 移动的钉子 movingSpikes = split[0]; // 激光 laser = split[1]; }
  可以看到人物动作其实就是 根据动作分解图生成Animation,在合适的时候播放动画,并不停的改变其位置。看起来就是在行走了。
  根据这些。。我们就可以去试着画地图,还有会动的人物了。

转载于:https://blog.51cto.com/gswxr/716165

android 游戏引擎libgdx demo cuboc分析相关推荐

  1. android游戏加载,Android 游戏引擎libgdx 资源加载进度百分比显示案例分析

    因为案例比较简单,所以简单用AndroidApplication -> Game -> Stage 搭建框架 一.主入口,无特殊 public class App extends Andr ...

  2. libgdx和android界面结合,Android游戏引擎libgdx使用教程5:常用UI类与舞台

    像按钮.下拉框.列表.标签.图片.复选框.编辑框.分割面板.滑动面板.滑动条等都是比较常用的UI类,它们都属于Actor,可以很方便的纳入到舞台的管理中,而且都包含在com.badlogic.gdx. ...

  3. Android 游戏引擎libgdx之Box2D Hello Box2D

    Box2D官网 ----> 传送门 http://box2d.org/ Box2D v2.1.0用户手册翻译 ----> 传送门 http://blog.csdn.net/complex_ ...

  4. libgdx和android界面结合,Android游戏引擎libgdx使用教程11:Skin和UI配置文件

    ibgdx的UI改进很大,原来各种稀奇古怪的问题都已经解决了,而且UI的类型也基本上完全了.推荐大家下载最近的版本使用. UI的使用我觉得唯一复杂的就是各种样式的制定,比如TextButton: pu ...

  5. 开源Android游戏引擎介绍

    Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何 处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎 ...

  6. 技术转载:八款开源 Android 游戏引擎 (巨好的资源)

    作者: iamsheldon 链接:http://software.intel.com/zh-cn/blogs/2012/01/13/android-4/ 初学Android游戏开发的朋友,往往会显得 ...

  7. 八款开源 Android 游戏引擎 (巨好的资源)

    初学Android游戏开发的朋友,往往会显得有些无所适从,他们常常不知道该从何处入手,每当遇到自己无法解决的难题时,又往往会一边羡慕于 iPhone下有诸如Cocos2d-iphone之类的免费游戏引 ...

  8. 八款开源Android游戏引擎

    导读:很多初学Android游戏开发的朋友,往往会羡慕iPhone下有诸如Cocos2d-iphone之类的免费游戏引擎可供使用,事实上,Android也有相当数量的游戏引擎存在.下面我罗列出八款常见 ...

  9. Android 游戏引擎汇总

    Android 游戏引擎汇总 1.AndEngine 简介:AndEngine 基于libGDX框架开发,使用OpenGL ES进行图形绘制.同时继承了BOX2D物理引擎,因此能实现一些较为复杂的物理 ...

最新文章

  1. Android的数据存储
  2. 【干货】用Axure做原型,一秒钟提高效率的必知技巧总结
  3. Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.3.xsd).
  4. RabbitMQ如何实现延迟队列?
  5. web通讯录常见问题解答以及增加个性功能
  6. Spring Boot中防表单重复提交以及拦截器登录检测
  7. csgo跳投指令_csgo跳投绑定指令
  8. 递归和对面对象编程初步
  9. linux创建根目录代码,Linux文件系统之目录的建立
  10. matlab求机制,[转载]文化算法 matlab
  11. Python爬虫怎么学?面向招聘岗位职责学习,看看你的技术能拿多少薪资
  12. js基础知识汇总08
  13. sql_存储过程、函数、分支、循环
  14. 表面肌电信号(sEMG)介绍
  15. 互动媒体技术专题2——多视角认识十二个“一” 技术预演与方案设计
  16. Win11添加新的Microsoft Teams集成:共享屏幕变得更容易
  17. 图片计算机权限 win10,怎么设置win10系统的相机权限
  18. 侯捷老师c++面向对象高级编程
  19. FBX与Opengl骨骼系统
  20. python网易云爬虫网络技术的意义_Python3爬虫实战之网易云音乐

热门文章

  1. 通过define _CRTDBG_MAP_ALLOC宏来检测windows上的code是否有内存泄露
  2. 【Live555】live555源码详解(五):MediaSource、MediaSink、MediaSession、MediaSubsession
  3. 系统dsn oracle,linux平台配置oracle odbc dsn的方法.docx
  4. yudian温控表a1温度怎么补偿_冰箱冷藏温度多少合适 冰箱冷藏温度怎么调节 看完这篇你就有答案 冰箱...
  5. π型滤波频率计算_滤波电路的总结
  6. python查看包的安装路径_查看python包的安装路径,检查安装路径设置。Python包的Python来自,从中,检测...
  7. python实训总结报告书_20172304 实验四python综合实践报告
  8. linux cp 强制覆盖_Linux基本操作教程
  9. 【Java】阿里巴巴java开发手册总结(我能看懂的)
  10. 系统分析与设计 实验一用例模型