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

时间:2016-03-18 14:50:00

标签: c# textures monogame rectangles

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

int a = (int) strtol( argv[1], NULL, 10 );
int b = (int) strtol( argv[2], NULL, 10 );
...
int answer = addition( a, b );

所以我的游戏分辨率为Draw()。要让背景纹理上下移动,我必须让它有一个// Update() if (Rectangle.Y = -16) // My texture is positioned to -16 initially Rectangle.Y++; else if (Rectangle.Y = 0) Rectangle.Y--; 。我做了1366x768。每次调用上面的代码时,它应该等待1-2秒(尚未实现),向下移动16个像素,再次等待并返回16个像素......但是该代码不起作用...你能指导我吗?如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用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;