出于学习目的,我想在nes/gb上编写一个受Zelda系列启发的简单2D游戏.
http://www.5min.com/Video/The-Legend-of-Zelda-a-Link-to-the-Past---Walkthrough-Part3-89824010就是一个很好的例子.
玩家可以在可滚动的视图上移动,并且当达到定义的地图限制时,例如房门,地牢或新区域,加载新的特定地图.
什么是实现这一目标的最佳和最简单的方法,特别是对于Android设备?你能指点我一些有用的资源,片段,书籍.
我已经阅读了一些关于OpenGL ES的东西,但对于我愿意做的事情听起来太过分了:2D; 但是,我不确定我能用Canvas处理比手机屏幕更大的东西.
谢谢.
我有一个简单的2D瓷砖生成器工作,我正在读取填充1或0的int地图[100] [100]并根据他们的瓷砖ID绘制瓷砖,0是水,1草.
我使用一些基本的Numpad控制处理程序,使用camIncr(32.0f),我根据运动设置摄像机位置:
case KeyEvent.KEYCODE_DPAD_RIGHT:
cameraPosX = (float)(cameraPosX + camIncr);
break;
Run Code Online (Sandbox Code Playgroud)
在我的绘制循环中,我只是绘制足够的瓷砖以适合我的屏幕,并使用cameraOffsetX和cameraOffsetY(它的相机位置/瓷砖大小)跟踪左上方的瓷砖
我使用GLU.gluOrtho2D进行投影.
这是我的自定义渲染器中的绘制循环:
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode( GL10.GL_PROJECTION );
gl.glLoadIdentity( );
GLU.gluOrtho2D(gl, 0, scrWidth, scrHeight, 0);
repere.draw(gl, 100.0f); // this is just a helper, draw 2 lines at the origin
//Call the drawing methods
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
tiledBackground.draw(gl, filtering);
Run Code Online (Sandbox Code Playgroud)
我的tilesBackground绘图功能:
int cols = (569 / 32) + 2; // how many columns can fit on the screen
int rows = (320 / 32) + 1; // haw …Run Code Online (Sandbox Code Playgroud)