我是一个仍然在Android学习的开发者,我到目前为止创建了两个应用程序,一个闹钟,一个小部件和一个使用数据库的传递管理器,我有一些经验,但我想创建一个2D端滚动游戏,我在网上查看并有不同的教程,但是,什么是开始工作的最佳方式?我读过关于libgdx但我不确定它是否已经过时了.
我已经看到所有游戏都是用Java制作的,然后移植到Android上,这是正确的吗?我很感激一些指导,谢谢!
Epi*_*rce 13
你有多种选择,你可以选择AndEngine(这对我来说似乎非常缺乏文档和随机),从SurfaceView扩展你自己的"原生"Android游戏(这不是不可能但它肯定不会让你的生活很容易,特别是在处理图像和特别是声音时,但这里有一个设置:使用自定义SurfaceView和线程进行Android游戏编程(示例)),还有LibGDX.
我个人推荐LibGDX,我甚至做了一个相当简单的4人多人游戏,当然也不难.我建议如何获得以下教程:http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx
基础知识如下:
创建项目时,您要做的第一件事是更改为ApplicationAdapter,Game这样您就可以访问setScreen(Screen)委派功能,这样您就可以将游戏的显示和逻辑分隔到屏幕中.
您想要处理屏幕中的已用时间,其操作如下:如何在Libgdx中跟踪时间(android)
您可能想要制作一个菜单,当然可以使用漂亮的图片和BitmapFonts来完成,但我会指向official wiki(https://github.com/libgdx/libgdx/wiki).你可以使用Scene2D,虽然我发现它有点困难,所以我亲自制作了一个由矩形组成的菜单,它工作得相当好:LibGDX - 自定义点击监听器?
关于如何使用LibGDX处理触摸事件的更多"点击导向"指南:https://stackoverflow.com/a/24511980/2413303
我解决拉伸而不是使用StretchingViewport或内置相机的方式如下:
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) ;
}
}
Run Code Online (Sandbox Code Playgroud)
确保在Game的dispose()回调中处理需要处理的资源.
Libgdx是不是已经过时了,恕我直言,这是为Android编程的最佳方式.原因是,您可以在桌面上开发99%(想想控制器,它不会是Android上的键盘)然后你有一个只有几行的工作Android应用程序.
如果你直接为android开发,你需要使用verry慢模拟器,或者你必须将应用程序发送到测试电话,只是为了调试你的代码.这比直接在桌面上进行调试慢得多.
Libgdx非常高效,易于使用(只要你了解它是如何工作的)并且有一个非常好的文档.
对于教程:我在这里写了一个答案,这似乎对一些人有所帮助.这是一个简短的"教程",仅显示了基础知识,并且我已经添加了一些帮助我学习它的教程的链接.所以我希望它能帮助你^^
| 归档时间: |
|
| 查看次数: |
9318 次 |
| 最近记录: |