游戏当中的人物移动和地图滚屏其实是两个独立的运行过程,而且一般来说,地图滚屏是因人物移动而触发的被动过程,那么如何使人物移动的时候始终居中呢,实际上,只要合适的移动地图,让地图沿人物的移动方向反向移动,就可以做到人物始终居中的效果。而这个地图的移动过程就是滚屏,那么滚屏是怎么来实现的呢。以RPG游戏为例,RPG游戏的地图是以Tile方式排列的。假设一个场景大小为sw×sh个Tile,而屏幕大小为w×h个Tile,Tile规格为 a*b,那么在Canvas中绘制地图的时候(1.0的做法),应该设置变量x0,y0标志当前屏幕左上角的Tile在整个大场景中的位置,然后
for(int x=0;x<w;x++)
for(int y=0;y<h;y++)
{
g.drawImage(screen[sc[(y+y0)*sw+x+x0]],x*a,y*b,0);
}
其中,sc[]数组表示地图索引,screen[]数组是tile图片。sc[]数组一般是通过读入外部索引文件生成,他的数值就是指定Tile中的图片编号。比如sc[2]=3就表示第3个Tile中需要用编号为4为图片来绘制。
由上面的代码就可以看出,当人物移动的时候,相应改变x0和y0的值,就可以实现地图的滚屏了。
作者: gophinight