-1

这可能是一个没有受过教育的问题 - 或者是一个奇怪的问题。

我的问题是为什么这段代码不起作用:

            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 游戏的控件。是用来移动物体的。

并且为了记录,这不是一个重要的问题。我的代码确实有效。我只是好奇为什么它会这样工作。

4

1 回答 1

1

在第一个例子中,我在调用位置函数之前先减去一部分(物体的速度)。

不,在第一个版本中,您减去的是旧位置,而不是减去速度。

您描述的代码是:

player.setY((-player.velocity) + player.getY());

这将起作用。

于 2012-10-01T19:42:22.540 回答