所以我正在处理我的菜单背景,我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个像素......但是该代码不起作用...你能指导我吗?如何做到这一点?
答案 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;