c++ - 如何在 SFML 中为 Sprite 制作动画

标签 c++ animation 2d sprite sfml

假设我有 4 张图像,我想使用这 4 张图像来制作角色动画。这 4 个图像代表行走的角色。我希望动画在我按下移动键时自动重复,但在我松开它时立即停止。如果您不知道它,则不需要特定于 SFML,只要基本理论就能真正帮助我。

谢谢。

最佳答案

您可能需要某种简单的状态机。当按键按下时(参见 sf::Input's IsKeyDown method ),让角色处于“动画”状态。当键未按下时,使角色处于“非动画”状态。当然,您始终可以跳过这种“状态”,只执行我在下面提到的操作(具体取决于您在做什么)。

然后,如果角色处于“动画”状态,则获取下一个“图像”(有关详细信息,请参阅下一段)。例如,如果您将图像存储在一个简单的 4 元素数组中,则下一张图像将位于 (currentIndex + 1) % ARRAY_SIZE。根据您正在做的事情,您可能希望将图像帧存储在更复杂的数据结构中。如果角色不处于“动画”状态,则您不会在此处进行任何更新。

如果您的“4 张图像”在同一个图像文件中,您可以使用 sf::Sprite 的 SetSubRect方法来更改显示的图像部分。如果您实际上有 4 个不同的图像,那么您可能需要使用 sf::Sprite 的 SetImage切换图像的方法。

关于c++ - 如何在 SFML 中为 Sprite 制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2684938/

相关文章:

c++ - 未解析的外部符号

c++ - (C++) 读取矩阵文件的最快方法(任意大小)

ios - 允许一次调用一个类别方法 ios (@synchronized)

XNA 2D 游戏引擎

java - 用 GUI 表示二维数组

c++ - 不断变化的工作负载是否待定?

c++ - C++ 中对 __imp_Rectangle 的 undefined reference

c++ - Ncurses : movement

javascript - 如何在 Web Animation API 中为 "from"设置动画

c - 在C中以特定格式打印出二维数组