[libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计
声明:《使用Libgdx进行游戏开发》是一个系列,文章的原文是《Learning Libgdx Game Development》,大家请周知。后续的文章连接在这里
这是一场旅程的开始。
我们将要使用Libgdx来开发一款功能俱全的游戏--CanyonBunny峡谷兔子,一个控制兔子跑酷吃金币的平台游戏。
对于程序员来讲,实践是最快的学习方法。所以建议大家从头到尾的实践一遍先,当然,要注意一些基本的提示。
在开始之前,我们要构思一下我们准备开发的游戏,最好能编写一份游戏设计文档。
(游戏设计文档是一个游戏成功的基本前提。如果你没有事先做好游戏设计文档,那么你的游戏可能永远没有完成的那一天,哪怕它再简单。)
构思之后,开始动手,首先使用Libgdx Project setup创建游戏工程。
•Name: CanyonBunny
•Package: com.packtpub.libgdx.canyonbunny
•Game class: CanyonBunnyMain
•Destination: D:\gamedev\CanyonBunny
•Generate the desktop project: 勾上
像这样:

游戏名称:CanyonBunny,加载工程之后记得把Android里的名称改掉,默认的值是<string name="app_name">My LibGDX Game</string>
首先构思游戏基本框架(OOP):不懂类图也不要担心,可以边做边看,以后看得多了就懂了。
在这个类图里面,包含了该游戏所有的类。(包括重要的类的描述和它们之间的关联)
首先, 不要被类图的这些线啊箭头啊方框啊吓到. 可能你并不熟悉类图或者UML (Unified Modeling Language),不要担心,直接看我解释吧.
【每个类用一个方框代表,上面有«abstract»的表示抽象类,«interface»的表示接口。】
【线用来表示类之间的关系:不带箭头的线表示两者之间相互依赖。带实心箭头的表示该类需要指向的类才能正常工作。空心箭头通常都是指向基类/接口的实现类】
【数字0..*是指对应的类的实例的个数关系,是1个对1个实例还是有很多个实例】
下面我解释一下:
• 玩家角色
°° BunnyHead: 它表示玩家控制的角色.
• 关卡对象
°° Rock: 它表示一个有边的从左到右的平台 , 中间长度任意.就是关卡的地面.
• 关卡道具
°° GoldCoin: 它表示一个金币,玩家碰到了增加玩家的分数.
°° Feather: 它表示一个羽毛,玩家碰到了可以飞.
• 关卡装饰
°° WaterOverlay: 它表示水面,它跟摄像机是横向绑定的,所以一直看得见.
°° Mountains: 它表示两座用不同的速度移动的山,模拟一个视差效果.(Parallax视差效果是游戏中惯用的手段)
°° Cloud: 它代表了一个在天空慢慢从右移动到左边的云.
提示:对于游戏程序员来讲,先将自己的游戏设计类图画出来然后进行编码是一个好习惯。
试试根据上面的类图实现WorldRender,WorldController,CanyonBunnyMain的代码结构。
PS:欢迎各路游戏爱好者入群426950359,所有源码文件和资源文件都在群共享中
[libGDX游戏开发教程]使用libGDX进行游戏开发(1)-游戏设计的更多相关文章
- [libGDX游戏开发教程]使用libGDX进行游戏开发(12)-Action动画
前文章节列表: 使用libGDX进行游戏开发(11)-高级编程技巧 使用libGDX进行游戏开发(10)-音乐音效不求人,程序员也可以DIY 使用libGDX进行游戏开发(9)-场景过渡 ...
- 微信小程序开发教程 #043 - 在小程序开发中使用 npm
本文介绍了如何在微信小程序开发中使用 npm 中包的功能,大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频版更新. 微信小程序在发布之初没有对 npm 的支持功能,这也是目前很多前端开发 ...
- PythonWeb开发教程(一),开发之前需要准备什么
什么是web开发呢,其实就是开发一个网站了.那开发网站需要用到哪些知识呢 1.python基础,因为用python开发的,所以python指定要会,最起码你也得会条件判断,循环,函数,类这些知识: 2 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(11)-高级编程技巧 Box2d和Shader
高级编程技巧只是相对的,其实主要是讲物理模拟和着色器程序的使用. 本章主要讲解利用Box2D并用它来实现萝卜雨,然后是使用单色着色器shader让画面呈现单色状态:http://files.cnblo ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(10)-音乐和音效
本章音效文件都来自于公共许可: http://files.cnblogs.com/mignet/sounds.zip 在游戏中,播放背景音乐和音效是基本的功能. Libgdx提供了跨平台的声音播放功能 ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(2)-游戏框架搭建
让我们抛开理论开始code吧. 入口类CanyonBunnyMain的代码: package com.packtpub.libgdx.canyonbunny; import com.badlogic. ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(9)-场景过渡
本章主要讲解场景过渡效果的使用.这里将用到Render to Texture(RTT)技术. Libgdx提供了一个类,实现了各种常见的插值算法,不仅适合过渡效果,也适合任意特定行为. 在本游戏里面, ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(7)-屏幕布局的最佳实践
管理多个屏幕 我们的菜单屏有2个按钮,一个play一个option.option里就是一些开关的设置,比如音乐音效等.这些设置将会保存到Preferences中. 多屏幕切换是游戏的基本机制,Libg ...
- [libgdx游戏开发教程]使用Libgdx进行游戏开发(6)-添加主角和道具
如前所述,我们的主角是兔子头.接下来我们实现它. 首先对AbstractGameObject添加变量并初始化: public Vector2 velocity; public Vector2 term ...
随机推荐
- java线程(2)——模拟生产者与消费者
前言: 我们都听说过生产者和消费者的例子吧,现在来模拟一下.生产者生产面包,消费者消费面包.假定生产者将生成出来的面包放入篮子中,消费者从篮子中取.这样,当篮子中没有面包时,消费者不能取.当篮子满了以 ...
- Visual Studio 2012,创建工程Build Driver,基于纯Source Code.
拿到一堆纯代码,怎么去Create Project,设置Include路径,lib路径,要不要Pre-compile技术,配置Project之间的依赖关系. SourcesConverter Bas ...
- vuex中获取的数据使用v-model绑定出问题
get selectedProp() { return this.$store.state.selectedProp; } 获取的数据selectedProp直接绑定在表单元素上会有错,因为不能直接对 ...
- LeetCode--Reverse Linked List(Java)
相似题目: Palindrome Number Valid PalinDrome Reverse Linked List Palindrome Linked List 翻转单链表(要注意的是是否含有头 ...
- Linux相关——关于文件调用
本文主要记录几个常见文件调用(表示为了造数据试了n种方法,,,发现了一些神奇的东西,会在下面一一说明. 首先在程序中我们可以打开和关闭程序. 常见的freopen用法简单,但是只能使用一次,如果在程序 ...
- taotao购物车2 解决购物车本地cookie和服务器redis不同步的问题
下面的思路逻辑一定要理清楚,比较绕 思路; 前面已经实现了在cookie本地维护购物车的功能, 这次加入和服务器同步功能, 因为 购物车 操作比较频繁,所以,后台服务器 用redis存储用户的购物车信 ...
- Working with large data sets in MySQL
What does working with large data sets in mySQL teach you ? Of course you have to learn a lot about ...
- HNOI2002 营业额统计 [Splay]
题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...
- [poj 2104]主席树+静态区间第k大
题目链接:http://poj.org/problem?id=2104 主席树入门题目,主席树其实就是可持久化权值线段树,rt[i]维护了前i个数中第i大(小)的数出现次数的信息,通过查询两棵树的差即 ...
- js实现日历
有这样一个普通的日历需求 第一反应就是找插件,结果找到了,但是改起来非常麻烦,然后查下实现的原理,发现原来很简单,于是自己实现了一个. 首先分析一下这个组件,每页显示的是 当前月的所有日期及所占据的行 ...