这可能是一个没有受过教育的问题 - 或者是一种奇怪的问题。
我的问题是为什么这段代码不起作用:
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游戏的控件。它用于移动物体。
记录中,这不是一个重要的问题。我的代码确实有效。我只是好奇它为什么会像它一样工作。
答案 0 :(得分:1)
在第一个例子中,我在调用位置函数之前首先减去一个部分(对象的速度)。
不,在第一个版本中,您将减去旧位置,而不是减去速度。
您所描述的代码是:
player.setY((-player.velocity) + player.getY());
这将有效。