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;
所以我正在处理我的菜单背景,我 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;