看来我的 if 语句不起作用;它是,从我之前在整个代码中放置的调试消息框收集到的以报告变量等,只是不修改 if 块中的变量“pos”,但 if 块肯定正在执行。很难解释。
我正在用街道上的汽车制作一个小游戏,在这里,我尝试生成新车并根据它们所在街道的车道为它们分配起始位置(或修改它们的位置)。这不是生产代码,这只是我粗略的基本想法。
for (int i = 0; i < carlane.Count; i++)
{
float lane = carlane.ElementAt(i);
if (lane == 1)
{
if (carpos.Count <= i)
{
pos = new Vector2(screenWidth - 20, (screenHeight / 2) - (8 * screenHeight / 200));
}
else
{
pos = new Vector2(carpos[i].X - 2, carpos[i].Y);
}
rotation = 1.5f * (float)Math.PI;
}
else if (lane == 2)
{
if (carpos.Count <= i)
{
pos = new Vector2(screenWidth - 20, (screenHeight / 2) - (8 * screenHeight / 200));
}
else
{
pos = new Vector2(carpos[i].X - 2, carpos[i].Y);
}
rotation = 1.5f * (float)Math.PI;
}
}
spriteBatch.Draw(car, pos, null, Color.White, rotation, origin, (lane - 1) * (float)Math.PI * 0.5f, SpriteEffects.None, 0f);
if (carpos.Count > i)
{
carpos[i] = (pos);
}
else
{
carpos.Add(pos);
}
因此,当车道设置为 1 时,什么也没有发生。汽车产生,但不出现。当车道设置为 2 时,我故意在 if 块中使用与车道等于 1 时相同的代码,并且汽车会正确生成并沿着车道行驶。代码有问题,当车道 = 1 时,我不知道它是什么。
我的电脑运行 Windows 7 Home Premium 64 位,我正在使用 C# 2010 速成版和 XNA 游戏工作室 4.0。
请帮忙?