我的相机上有
50
像素偏移。屏幕尺寸为640x480,带偏移的相机为690x530;平铺是16x16像素。x
,y
是屏幕的像素位置,terrain
是一系列瓷砖,startTileXinCamera
是相机上x轴最左侧的平铺,startTileYinCamera
是相机上y轴最左侧的图块,tileXinCamera
是相机在x轴上覆盖的平铺计数,tileYinCamera
是相机在y轴上覆盖的平铺计数,tileCountX
是x轴上的总图块数,不是屏幕上的,而是地形的总数。
我在2D环境中遇到相机和平铺滚动的问题。所以,基本上我想按像素平滑地滚动我的图块,而是每个图块滚动它看起来像“滞后”或者是口吃。
这是我的平铺渲染代码:
void Terrain::render(SDL_Renderer* renderer, Camera* camera)
{
int x = 0, y = 0;
int startTileXinCamera = camera->getCamera()->x / tileWidth;
int startTileYinCamera = camera->getCamera()->y / tileHeight;
int tileXinCamera = camera->cameraSizeToPositionX() / tileWidth;
int tileYinCamera = camera->cameraSizeToPositionY() / tileHeight;
for (int i = startTileYinCamera; i < tileYinCamera; i++)
{
for (int j = startTileXinCamera; j < tileXinCamera; j++)
{
terrainGraphic->render(renderer, x, y, tileClip[terrain[i * tileCountX + j]->type]);
if (x < camera->getCamera()->w)
x += tileWidth;
}
x = 0;
if (y < camera->getCamera()->h)
y += tileHeight;
}
}
如何按像素平滑地滚动我的图块并消除不需要的效果?
答案 0 :(得分:1)
我弄明白了这个问题。我使用预定义的x,y坐标int x = 0,y = 0;和x + = tileWidth;放置瓷砖,而不是实际使用瓷砖的坐标。然后通过将图块的坐标提取到摄像机位置来计算图块的坐标,从而根据屏幕坐标正确渲染。我希望它不会混淆。这是代码,以防它可能对那里的人有用。对不起,代码很难看。
System.ServiceModel.Syndication.Syndicationfeed