|
有个问题不太明白,请教大家一下。
为了让角色一直保持在屏幕的正中间,我们要往相反的方向重绘背景。游戏的做法是引入了一个相对坐标SX,SY,如下方式渲染:
for(int i=SY; i<SY+16 ; i++)
{
for(int j=SX; j<SX+21 ; j++)
{
//画地面
RECT rect={ 0, Map[ Scene ].Ground *32, 32, Map[ Scene ].Ground * 32 +32};
Blt(lpDDSBackGround, DX+(j-SX)*32, DY+(i-SY)*32, lpDDSMap1, rect, FALSE);
}
}
但是这样就只能一格一格的移动背景。当地图格子较大时,就会感到不连续了。
现在我在做斜45度地图,用的是64 x 32大小的title,当移屏时就感觉到画面不连续了。
我用的做法是:引入 相对坐标 offx,offy.用下面的代码渲染。
for(int col=0;col<地图列数;col++)
{
for(int row=0;row<地图行数;row++)
{
n=m_map[row][col].Id;
if 地面
{
//贴图坐标
tx=col*64+(row%2)*32-32-offx;
ty=row*16-offy;
}
}
这样虽然能连贯的移屏,却每次都把数组扫描一遍,很不划算。
现在我不知道该如何做,请大家指教。 |
|