gpt4 book ai didi

c++ - 理解SDL帧动画

转载 作者:行者123 更新时间:2023-11-30 01:49:25 27 4
gpt4 key购买 nike

我正在阅读这本书 SDL game development .在第一个项目中,有一些代码用于移动 Sprite 表渲染帧的坐标:

void Game::update()
{
m_sourceRectangle.x = 128 * int((SDL_GetTicks()/100)%6);
}

我无法理解这一点...我知道它每 100 毫秒沿 x 轴移动 m_sourceRectangle 128 像素...但它实际上是如何工作的?有人可以分解这段代码的每个元素来帮助我理解吗?

我不明白为什么需要调用 SDL_GetTicks() 来执行此操作...

我也知道 %6 在那里,因为动画中有 6 帧......但它实际上是如何做到的?

书上说:

Here we have used SDL_GetTicks() to find out the amount of milliseconds since SDL was initialized. We then divide this by the amount of time (in ms) we want between frames and then use the modulo operator to keep it in range of the amount of frames we have in our animation. This code will (every 100 milliseconds) shift the x value of our source rectangle by 128 pixels (the width of a frame), multiplied by the current frame we want, giving us the correct position. Build the project and you should see the animation displayed.

但我不确定我是否理解为什么获取自 SDL 初始化以来的毫秒数有效。

最佳答案

模运算符取余下的除法。因此,例如,如果 GetTicks() 为 2600,则首先除以 100 使它成为 26,然后 26 的模 6 为 2。因此它是第 2 帧。

如果 GetTicks() 为 3300;你除以 100 得到 33; 33 的模 6 是 3;第 3 帧。

关于c++ - 理解SDL帧动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com