C++ 无限平铺背景
我试图在SDL中创建一个平铺背景,一个可以滚动并继续无限滚动的背景 所以,我想出了一些代码并进行了测试。它工作得很好,但只能沿x轴移动1920像素,沿Y轴移动1080像素 这是我的密码:C++ 无限平铺背景,c++,sdl,C++,Sdl,我试图在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 =
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);
}
}
}
void Background::render(SDL_渲染器*渲染器){
int Xoffset=0;
int-Yoffset=0;
对于(int y=0;(y*411)<1080;y++){
对于(int x=0;(x*405)<1920;x++){
Xoffset=0;
Yoffset=0;
如果(GameManager::GetInstance().getGlobalX()+(405*x)+405<0){
Xoffset=1920;
}
如果(GameManager::GetInstance().getGlobalY()+(411*y)+411<0){
Yoffset=1080;
}
SDL_Rect backRect={GameManager::GetInstance().getGlobalX()+(405*x)+Xoffset,GameManager::GetInstance().getGlobalY()+(411*y)+Yoffset,405411};
SDL_RenderCopy(渲染器,ResourceManager::GetInstance().getTexture(“后台”)、0和backRect);
}
}
}
getGlobalX()和getGlobalY()是对象相对于播放器的位置。您应该能够多次绘制1920x1080背景 算法看起来像这样
所以基本上,你把两个背景推到右边,每次你需要的时候都把一个放在左边。这应该很容易编码。您应该能够多次绘制1920x1080背景 算法看起来像这样
所以基本上,你把两个背景推到右边,每次你需要的时候都把一个放在左边。这应该很容易编码。这显然和代码中对1920和1080的多个硬编码引用有关。。。你们是如何解决这个问题的?这显然和代码中对1920和1080的多个硬编码引用有关。。。你是如何解决这个问题的?