我试图在SDL中创建一个平铺的背景,一个滚动并继续无限滚动。
所以,我想出了一些代码并对其进行了测试。它运行良好,但只能沿x轴行进1920像素,沿Y行行程1080行。
这是我的代码:
void Background::render(SDL_Renderer *renderer){
int Xoffset = 0;
int Yoffset = 0;
for(int y = 0; (y * 411) < 1080; y++){
for(int x = 0; (x * 405) < 1920; x++){
Xoffset = 0;
Yoffset = 0;
if(GameManager::GetInstance().getGlobalX() + (405 * x) + 405 < 0){
Xoffset = 1920;
}
if(GameManager::GetInstance().getGlobalY() + (411 * y) + 411 < 0){
Yoffset = 1080;
}
SDL_Rect backRect = {GameManager::GetInstance().getGlobalX() + (405 * x) + Xoffset, GameManager::GetInstance().getGlobalY() + (411 * y) + Yoffset, 405, 411};
SDL_RenderCopy(renderer, ResourceManager::GetInstance().getTexture("background"), 0, &backRect);
}
}
}
getGlobalX()和getGlobalY()是对象应该相对于玩家的位置。
答案 0 :(得分:2)
您应该可以多次绘制1920x1080背景。
算法看起来像这样。
所以基本上,你向右推两个背景,并在每次需要时保持一个在左边。这应该很容易编码。