【发布时间】:2013-12-27 02:23:58
【问题描述】:
我正在用 C# 用 monogame 制作一个自上而下的汽车游戏。 (我标记 XNA 是因为 monogame 也使用 XNA。完全一样)
游戏现在看起来像这样:
虽然我的车速有些问题。 我在背景类中有一个变量,它的速度正在增加,但是我试图对汽车做同样的事情,但是速度增加了 1,所以它有汽车移动得更远的错觉。我已将其包含在汽车的代码中:
Background b = new Background();
后台速度每帧增加'0.001',放入类的Update部分。
background.cs
public void Update(GameTime gameTime)
{
//blahblahcode
speed += 0.001;
//blahblahcode
}
在 oponnent.cs 我的代码中有这个。
public void Update(GameTime gameTime)
{
float Timer1 = (float)gameTime.ElapsedGameTime.TotalSeconds;
timer1_time -= Timer1;
int speedp = (int)b.speed + 1;
Console.WriteLine(b.speed);
if (timer1_time <= 0)
{
timer1_time = 4;
randNum = rand.Next(3);
carDrivePos = cardefault_y;
if (randNum == 0)
{
lane = p.posLeft;
}
else if (randNum == 1)
{
lane = p.posMid;
}
else if (randNum == 2)
{
lane = p.posLeft;
}
}
carDrivePos += (int)b.speed + speedp;
carPos = new Vector2(lane, carDrivePos);
}
它的编码有点奇怪,但我理解它并且它可以工作,一点点。 如您所见,我有
int speedp = (int)b.speed + 1;
我认为应该抓住每一帧的速度。但事实并非如此。它只从我在'Background.cs'中指定的数字2中获取。所以汽车继续以2速度+ 1速度行驶。所以速度实际上是3,所以如果背景继续移动得更快,汽车就会保持速度一样。
我怎样才能得到它,以便它像“Background.cs”一样更新速度? 提前致谢。 (对不起,如果这很难理解)
【问题讨论】:
-
Console.WriteLine(b.speed)给了你什么?还有b.speed的类型是什么?