这可能是一个没有受过教育的问题 - 或者是一个奇怪的问题。
我的问题是为什么这段代码不起作用:
if (up == true)
{
SDL_Delay(pause_t);
player.setY(player.velocity - player.getY());
}
if (left == true)
{
SDL_Delay(pause_t);
player.setX(player.velocity - player.getX());
}
但是,此代码确实有效:
if (up == true)
{
SDL_Delay(pause_t);
player.setY(player.getY() - player.velocity);
}
if (left == true)
{
SDL_Delay(pause_t);
player.setX(player.getX() - player.velocity);
}
两个代码的区别在于,在第一个例子中,我在调用位置函数之前先减去了一部分(物体的速度)。当我运行这段代码时会发生什么,它并没有在轴上移动 1,而是移动 10。Y 轴的大小在 10 以上,所以我实际上并没有减去它自己的坐标。
但是,在第二段代码中,在调用了我的位置函数之后,我最终减去了速度。第二段代码发生的情况是对象移动了一个像素(速度的整数值)。
对于那些想知道我在做什么的人,这些是我的 openGL 游戏的控件。是用来移动物体的。
并且为了记录,这不是一个重要的问题。我的代码确实有效。我只是好奇为什么它会这样工作。