我正在建立一个驾驶游戏.视图是一个透视图,玩家的视角来自向前行驶的汽车后方.当汽车向前行驶时,它周围的所有环境都会向下移动并缩放(现在看起来相当不错),这给人的印象是汽车向前移动.现在,我希望有一些逼真的驾驶控制,这样汽车可以提高速度,然后在向上箭头释放时逐渐减速.目前,当按下向上箭头时,我会调用几个精灵的所有移动功能.我正在寻找一种方法来控制它,以便在汽车缓慢等时不会经常调用这些函数.到目前为止我的代码是:
protected void Drive()
{
KeyboardState keyState = Keyboard.GetState();
if (keyState.IsKeyDown(Keys.Up))
{
MathHelper.Clamp(++TruckSpeed, 0, 100);
}
else
{
MathHelper.Clamp(--TruckSpeed, 0, 100);
}
// Instead of using the condition below, I want to use the TruckSpeed
// variable some way to control the rate at which these are called
// so I can give the impression of acceleration and de-acceleration.
if (keyState.IsKeyDown(Keys.Up))
{
// Lots of update calls in here
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这应该很容易,但出于某种原因,我无法理解它.非常感谢这里的一些帮助!谢谢
我希望有人可以指出我哪里出错了?我没有太多使用三元运算符的经验,但觉得有充分的理由在这里使用它,因为它减少了代码长度.
但是,我收到了上述错误.任何人都可以看到我错在哪里?
Colour.R <= 255 ? Colour.R+=10 : Colour.R+=11;
Run Code Online (Sandbox Code Playgroud)
编译器返回
Only assignment, call, increment, decrement, and new object expressions can be used as a statement
其中颜色代表颜色矢量.
我想在我的XNA游戏中实现一个简单的计数器.认为这很简单.我有以下代码:
elapsed = gameTime.ElapsedGameTime.TotalMilliseconds;
timer -= (int)elapsed;
if (timer <= 0)
{
timer = 10; //Reset Timer
}
Run Code Online (Sandbox Code Playgroud)
但过去从未改变过0.0.我错过了一些明显的东西吗?我怀疑我.我将gameTime声明在顶部并像往常一样初始化.
如上所述,这里有更多代码:
公共类Game1:Microsoft.Xna.Framework.Game {
private GameTime zombieTime;
public Game1()
{
zombieTime = new GameTime();
// Other (unrelated) stuff here
}
protected void AddZombie()
{
elapsed = zombieTime.ElapsedGameTime.TotalMilliseconds;
timer -= (int)elapsed;
if (timer <= 0)
{
timer = 10; //Reset Timer
Zombie zombie = new Zombie(ScreenWidth, ScreenHeight, random);
zombie.LoadContent(this.Content, "ZombieSprites/ZombieLeft1");
zombies.Insert(0, zombie);
}
}
protected void Update()
{
AddZombie();
// Other game update …Run Code Online (Sandbox Code Playgroud)