Monogame - 如何自动上下移动矩形并重复?

Monogame - how to automatically move rectangle up and down and repeat?

所以我正在处理我的菜单背景,我 Draw() 那里有一个带有矩形的纹理。我如何让矩形等待,向上然后向下移动,等待并重复?我尝试了以下方法:

// Update()
if (Rectangle.Y = -16) // My texture is positioned to -16 initially
    Rectangle.Y++;
else if (Rectangle.Y = 0)
    Rectangle.Y--;

所以我的游戏分辨率是1366x768。要使背景纹理上下移动,我必须使其具有 height > 768。我做到了1366x800。每次调用上面的代码时,它应该等待 1-2 秒(尚未实现),向下移动 16 个像素,再次等待并返回向上 16 个像素......但是该代码不起作用......你能指导我吗这是如何完成的?

您可以使用 Math.Sin 来做到这一点,这将使您从 -1 平滑过渡到 1。您必须保留矩形中心 Y 位置的副本。

double time = gameTime.TotalGameTime.TotalSeconds;
Rectangle.Y = centerY + (int)(Math.Sin(time * transitionSpeed) * maxOffset);

你可以玩double transitionSpeed以获得最好的视觉效果。 int maxOffset 是距 centerY 的最大偏移量。


不想要流畅的动作就这样

int speed = 1; // speed of movement

然后在更新

if (Rectangle.Y <= -16 || Rectangle.Y >= 0) 
    speed *= -1; // reverse move direction
Rectangle.Y += speed;