我是一个仍在学习Android系统的开发人员,到目前为止,我已经创建了两个应用程序,一个闹钟,一个小部件和一个使用数据库的通行证管理器,我有一点经验,但我想创建一个2D侧滚动游戏,我在网上查看,有不同的教程,但是,开始使用它的最佳方法是什么?我读过libgdx,但我不确定它是否过时。
我看到所有的游戏都是用Java制作的,然后移植到Android系统,这是正确的吗?我希望得到一些指导,谢谢!
Libgdx
并没有过时,恕我直言,它是为机器人编程的最佳方式。原因是,你可以在桌面上开发99%(ofc考虑一下控件,这在Android上不会是键盘),然后你有一个只有几行的工作Android应用程序。
如果您直接针对Android进行开发,则需要使用verry慢速模拟器,或者您必须将应用程序发送到测试电话,只是为了调试代码。这比直接在桌面上调试要慢得多。
Libgdx非常高效,易于使用(只要你了解它是如何工作的),并且有一个非常好的文档。
对于教程:我在SO上这里写了一个回答,貌似对一些人有帮助。这是一个简短的“教程”,只显示了verry基础知识,我已经添加了一些教程的链接,帮助我学习它。所以我希望它能帮助你to^^
你有多种选择,你可以选择AndEngine(对我来说,这似乎是非常不成熟和随机的),通过从SurfaceView扩展来制作自己的“原生”Android游戏(这不是不可能的,但肯定不会让你的生活变得容易,特别是在处理图像和声音时,但这里有一个设置:使用自定义SurfaceView和线程进行Android游戏编程(示例)),还有LibGDX。
我个人推荐LibGDX,我甚至用它做了一个相当简单的4人多人游戏,这当然不难。我推荐以下如何使用它的教程:http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx
基本情况如下:
>
创建项目时,首先要做的是将ApplicationAdapter
更改为Gamedelegation函数,以便将游戏的显示和逻辑分离为Screen。
您想在屏幕中处理经过的时间,如下所示:如何在Libgdx(android)中跟踪时间
你可能想做一个菜单,这当然可以用漂亮的图片和位图字体来完成,但我会用它指向
官方wiki
(https://github.com/libgdx/libgdx/wiki)。你可以使用Scene2D,尽管我发现它有点困难,所以我亲自制作了一个由矩形组成的菜单,它工作得相当不错:LibGDX - 自定义点击侦听器?
关于我如何使用LibGDX处理触摸事件的更多“面向单击”指南:https://stackoverflow.com/a/24511980/2413303
我解决拉伸而不是使用拉伸视口或内置相机的方法如下:
public class Resources
{
public static Texture texture;
public static SpriteBatch batch;
public static Matrix4 normalProjection;
public static BitmapFont bitmapFont;
public static ShapeRenderer shapeRenderer;
....
}
public static void initialize()
{
int width = Gdx.graphics.getWidth();
int height = Gdx.graphics.getHeight();
Resources.bitmapFont = new BitmapFont();
Resources.shapeRenderer = new ShapeRenderer();
Gdx.gl.glLineWidth((width < 640 && height < 480) ? 2.5f : 6f);
//camera = new OrthographicCamera(1, h / w); //I didn't use this at all
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
loadTextures();
Resources.batch = new SpriteBatch();
Resources.normalProjection = new Matrix4().setToOrtho2D(0, 0, 480, 320); //model is 480x320
Resources.batch.setProjectionMatrix(Resources.normalProjection);
Resources.shapeRenderer.setProjectionMatrix(Resources.normalProjection);
}
public class InputTransform
{
private static int appWidth = 480;
private static int appHeight = 320;
public static float getCursorToModelX(int screenX, int cursorX)
{
return (((float)cursorX) * appWidth) / ((float)screenX);
}
public static float getCursorToModelY(int screenY, int cursorY)
{
return ((float)(screenY - cursorY)) * appHeight / ((float)screenY) ;
}
}
确保在游戏的dispose()回调中释放需要释放的资源。
问题内容: 我正在尝试为xlib窗口创建游戏循环,但是无法正确绘制该窗口。现在,我正在使用XCreateSimpleWindow(…)创建一个窗口,并使用for循环一次绘制所有像素。(这些像素的颜色是从一个大的整数数组中读取的,现在,我将所有像素设置为蓝色。)现在,实际的游戏循环如下: 全局定义了变量dsp,win,pixels,gc。 现在,当我编译并执行二进制文件时,y坐标低的行主要是蓝色,而
Unity empowers game designers to make games. What's really special about Unity is that you don't need years of experience with code or a degree in art to make fun games. There are a handful of basic w
问题内容: 我想 动态地在过程主体内 创建 游标, 我也必须使用 for循环 而不是下面的代码。我做了动态光标,但我不能使用for循环。 如果我使用注释的代码(用于循环),我会报错 PLS-00221:不是过程或未定义。 是否可以在动态游标中使用for循环? 问题答案: 您不能在游标FOR循环中引用游标变量 但是您可以直接使用选择语句:
问题内容: 我在詹金斯(Jenkins)有2个工作: 建立并运行单元测试 (构建并)运行集成测试 Job-2 是 Job-1 的下游项目。 Job-1 在其上启动构建并运行单元测试。 Job-2 也会启动构建并运行集成测试。 我想更改它, 并使 Job-2 在由 Job-1 启动的结果构建上运行测试。 问题答案: 您可以使用Copy Artifact插件,并使用Job-2中的Job-1工件对它们进
问题内容: 我正在尝试创建一个对OOP友好的Java BlackJack游戏,以增进我的知识。 我碰壁了,我只是不知道该问题。想知道是否有人可以指出我的问题。 另外,在搜索了与此相关的主题之后,我发现人们一次又一次地说使用枚举会更有益,因为建议初学者这样做?还是我暂时应该坚持使用String数组。 谢谢。 我的代码: 编辑:目前我从println发出的输出是:[Card @ addbf1,Card
我目前的android应用程序使用Google play games服务作为一个基于回合的游戏。它已经发布,工作正常,但我想增加玩家与“电脑”对手对抗的能力,作为一个“真实”的人。这可能吗?这“合法”吗?从搜索Google play服务文档和代码来看,这似乎是不可能的。死了有谁知道不一样吗?