我正在使用太空喷气机开展 MOBA 游戏,其中4个玩家团队互相竞争。 我正在使用 FPC 3.0 和 SDL2.0.5 和Windows 7的 Lazarus IDE 的最新版本。
游戏说明: 玩家可以通过使用鼠标指向目的地并按 ENTER 来飞行他的喷气式飞机。射流在x / y轴上移动4000 * 4000区域,输出窗口800 * 600。查看下面的.gif文件,它取自关卡的最高区域。看看喷射器的运动是多么平滑和流畅。(实际游戏更平滑,但我不想超过堆栈的图像大小限制。)
问题说明:当一架飞机飞到4000 * 4000区域的BOTTOM或RIGHT侧时,虽然Pascal控制台识别出输入,但它并没有顺利响应空间输入通常与其他方面一样。就好像它会跳过计算一样。请参阅下面的.gif文章,了解远处的效果。
什么不是错的:
我认为发生了什么:我认为事实只发生了BOTTOM和RIGHT导致了某种程度上它试图拉伸(?)水平纹理......这样的事情。有什么想法吗?
抱歉我的英语不好。
编辑:这是我的照相机跟随我的喷码。
//UP //<--------clip blit //
if (shipy <= wheight/2)then //
begin //
cliprect^.x:= shipx-round(wwidth/2); //
cliprect^.Y:=1; //
end; //
//DOWN //
if ( shipy >= 4000-(wheight/2) ) then //
begin //
cliprect^.x:= shipx-round(wwidth/2); //
cliprect^.Y:= 4000 - wheight-1; //
end; //
//LEFT //
if(shipx <=wwidth/2) then //
begin //
cliprect^.x:=1; //
cliprect^.Y:= shipy-round(wheight/2); //
end; //
//RIGHT //
if (shipx >=(4000-(wwidth/2))) then //
begin //
cliprect^.x:=4000-wwidth-1; //
cliprect^.Y:= shipy-round(wheight/2); //
end; //
//
//
//
//=========CORNERS=========// //
//
//
//UP - LEFT //
if (shipy <= wheight/2) AND (shipx <= wwidth/2) THEN //
BEGIN //
//
cliprect^.x:=1; //
cliprect^.Y:=1; //
END; //
//
//UP - RIGHT //
if (shipy <= wheight/2) AND (shipx >=4000-(wwidth/2)) THEN //
BEGIN //
//
cliprect^.x:=4000-wwidth-1; //
cliprect^.Y:=5; //
END; //
//
//DOWN LEFT //
if (shipy >= 4000-(wheight/2)) AND (shipx <=wwidth/2) THEN //
BEGIN //
//
cliprect^.x:=1; //
cliprect^.Y:=4000-wheight-1; //
END; //
//
//
//DOWN- RIGHT //
if (shipy >= 4000-(wheight/2)) AND (shipx >=4000-(wwidth/2)) THEN //
BEGIN //
//
cliprect^.x:=4000-wwidth-1; //
cliprect^.Y:=4000-wheight-1; //
END; //
//
//
//
//
//
if (shipy >wheight/2) AND ( shipy < 4000-(wheight/2)) AND (shipx > wwidth/2) AND (shipx < 4000-(wwidth/2)) then //
begin //
cliprect^.x:=shipx-round(wwidth/2); //
cliprect^.Y:=shipy-round(wheight/2); //
//
end; //<--------------CAMERA----------//