If语句出错
本文关键字:出错 语句 If | 更新日期: 2023-09-27 18:18:32
似乎我的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);
}
因此,当lane被设置为1时,什么都不会发生。汽车会生成,但不会出现。当lane设置为2时,我故意在if块中使用与lane等于1时相同的代码,并且汽车会正确地沿着车道生成和行驶。当lane = 1时,代码有问题,我不知道这是什么。
我的电脑运行Windows 7 Home Premium 64位,我使用c# 2010 express edition with XNA game studio 4.0。
请帮忙吗?
当lane = 1时,比例(lane - 1) * (float)Math.PI * 0.5f
= 0,这意味着汽车被缩放为0 -因此屏幕上没有显示任何内容
当lane
为零时,(lane - 1) * (float)Math.PI * 0.5f
为零。您正在使用scale
参数0进行Draw
处理,它没有绘制任何内容。
文档:
public void Draw (
Texture2D texture,
Vector2 position,
Nullable<Rectangle> sourceRectangle,
Color color,
float rotation,
Vector2 origin,
float scale,
SpriteEffects effects,
float layerDepth
)
代码:
spriteBatch.Draw(
car,
pos,
null,
Color.White,
rotation,
origin,
(lane - 1) * (float)Math.PI * 0.5f,
SpriteEffects.None,
0f
);
你应该只根据车道改变pos
变量,而不是根据精灵的大小(你是在改变精灵的比例,只是将其设置为1.0f)。
spriteBatch.Draw(car, pos, null, Color.White, rotation,
origin, 1.0f, SpriteEffects.None, 0f);