我试图让滚动背景在背景图像小于程序窗口的情况下工作。出于这个原因,我创建了一个 for 循环来移动两组相同的复制图像。
奇怪的是,两组图像不断地分开而不是保持在一起,无缝。
这是使用 C++ 和 raylib,但在四处搜索后我不确定这是 raylib 特定的问题。
这是代码:
#include "raylib.h"
int main()
{
//preamble
const int windowW{600};
const int windowH{380};
float dt{0}; // for use with delta time between frames
SetTargetFPS(60);
InitWindow(windowW, windowH, "walk");
//backgrounds
Texture2D bg = LoadTexture("textures/far-buildings.png"); // 256 X 192
const float bgScale{0.5};
const int bgQty{2};
float bgX{0.0};
float bgX2{(bg.width * bgScale * bgQty)};
while (!WindowShouldClose())
{
//start drawing
BeginDrawing();
ClearBackground(WHITE);
dt = GetFrameTime();
bgX -= 250 * dt;
bgX2 -= 250 * dt;
if (bgX < -(bg.width * bgScale) * bgQty)
{
bgX = (bg.width * bgScale) * bgQty;
}
if (bgX2 < -(bg.width * bgScale) * bgQty)
{
bgX2 = (bg.width * bgScale) * bgQty;
}
for (int i = 0; i < bgQty; i++)
{
Vector2 bgPos{bgX + ((bg.width * bgScale) * i), 0.0};
Vector2 bgPos2{bgX2 + ((bg.width * bgScale) * i), 0.0};
DrawTextureEx(bg, bgPos, 0.0, bgScale, WHITE);
DrawTextureEx(bg, bgPos2, 0.0, bgScale, WHITE);
}
DrawText(FormatText("dt: %f", dt), 3, windowH - 10, 10, GOLD);
EndDrawing();
}
UnloadTexture(bg);
CloseWindow();
}
这是背景图片: