我试图创建一个具有3个背景的滚动背景,但是当第3个开始出现时,所有内容。它创造了一个巨大的蓝色屏幕(游戏的默认背景)在3号前面,在3RD之后它没有显示任何背景。我不知道如何解决这个问题,我已经知道了一些简单的事情。我有3RD工作,但是。
我正在尝试使用的代码。
public void Update(GameTime gameTime)
{
bgPos0.Y += speed;
bgPos1.Y += speed;
bgPos2.Y += speed;
if (bgPos0.Y >= 950)
{
bgPos1.Y = -950;
if (bgPos1.Y >= 950) // Doesn't go fully down.
{
bgPos2.Y = -950;
if (bgPos2.Y >= 950)
{
bgPos0.Y = 0; //(Try to change it to -950 still doesn't work. I guest it due to that bgPos0 is set to 0, 0)
}
}
}
}
pos的Vector2代码是
bgPos0 = new Vector2(0, 0);
bgPos1 = new Vector2(0, -950);
bgPos2 = new Vector2(0, -1900); // Could be the large -1900 number that destroying the code. To make it not work.
那么我该如何解决这个问题呢?我希望我现在能解决它,但出于某种原因我不能。
答案 0 :(得分:1)
我认为您不希望嵌套if语句。您发布的代码不断将第二个背景移动到-950,只要第一个背景超过950.由于第一个背景不断移回到-950,它不应该设法移动到950以上,因此它永远不会进入最后一个。我想你可能想要做的更像是:
public void Update(GameTime gameTime)
{
bgPos0.Y += speed;
if(bgPos0.Y > 950) {
bgPos0.Y = -950;
}
bgPos1.Y += speed;
if(bgPos1.Y > 950) {
bgPos1.Y = -950;
}
bgPos2.Y += speed;
if(bgPos1.Y > 950) {
bgPos1.Y = -950;
}
}
[编辑]:顺便说一下,有问题的数字不足以引起问题。 XNA的Vector2类将x和y组件存储为浮点数,C#中浮点数的最大值大约为3.4e38左右,根据MSDN精确到7位数。