”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 游戏中的精灵动画

游戏中的精灵动画

发布于2024-07-31
浏览:225

Animating Sprites In games

游戏开发中动画精灵的基础知识:

**在制作 2D 游戏时对精灵进行动画处理是该游戏非常重要的一部分。

我要讲的方法实际上适用于每个游戏框架:
> 逻辑很重要,语法不重要。

以下是实现动画的一些步骤:

  1. 抓住一个精灵表,最好将其分割成帧,但如果你不想浪费时间,你也可以使用精灵表,但另一个博客的情况就是这样。

  2. 使用列表或列表理解加载每个帧,即
    例如 #python spritesheet = [pygame.image.load(f"Assets/{i}.png") for i in range(1,total_frames)] 在这种情况下 4

2.在代码中实现了基本设置之后,现在您可以创建一个名为 ## func/def/void animate_sprites()
的方法 或者如你所愿。

  1. 现在创建一些变量,例如animation_boolean(告诉何时加载动画)和animation_index(保存每帧的计数)。
    请注意,如果您想要无尽的动画,您可以跳过animation_boolean或将其永远设置为true。

  2. 现在在animation_boolean()方法中,当anim_bool为true时,即:
    if (animation_bool):
    动画索引 = 1

    if (animation_index >= 40):
    Animation_index = 0 # 数字越大表示
    更平滑、更慢的动画,然后将其重置为零,确保您的停止限制应能被帧数整除

  3. 现在,最后,无论您使用哪个框架,都可以使用任何库的内置绘制方法来显示精灵,以便列表的索引根据编号进行。帧数,即

    python WIN.blit(spritesheet[animation_index // 10], (0,0))

  4. 调用渲染方法,现在您已经学会了如何在任何框架中为精灵制作动画。
    **

如果您觉得有帮助的话记得点赞和评论

版本声明 本文转载于:https://dev.to/muhammad_faseeh_1717/animating-sprites-in-2d-games-10g5?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为的主要场景bool:语句:if、whi...
    编程 发布于2024-12-23
  • 如何在不使用链接的情况下向 Span 元素添加工具提示?
    如何在不使用链接的情况下向 Span 元素添加工具提示?
    向不带链接的 Span 元素添加工具提示将鼠标悬停在 span 元素上时,通常需要向用户提供附加信息。这可以使用工具提示来实现,而不依赖于链接。解决方案:要使用内置 HTML 属性将工具提示添加到 span 元素,只需按如下方式使用 title 属性:<span title="My ...
    编程 发布于2024-12-23
  • 为什么我的 WebSocket 服务器在 Docker 化后无法连接?
    为什么我的 WebSocket 服务器在 Docker 化后无法连接?
    Docker化 WebSocket 服务器问题开发人员在尝试使用 Docker 容器化 WebSocket 服务器时遇到问题。服务器代码使用“connected”写入新连接,并且在容器外运行良好,但当放置在 Docker 容器内时,客户端会由于“连接重置”错误而出现恐慌,并显示错误消息“read t...
    编程 发布于2024-12-23
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-12-23
  • Python中如何导入同目录或子目录中的类?
    Python中如何导入同目录或子目录中的类?
    在Python中从同一目录或子目录导入类在Python中,您可以通过以下方式从同一目录或子目录中的文件导入类利用 __init__.py 文件。该文件是一个空占位符,指示该目录包含模块和包。从同一目录导入从与 main 相同的目录中的文件导入类.py,在该目录中创建一个 __init__.py 文件...
    编程 发布于2024-12-23
  • 为什么C90中函数名可以用作函数指针?
    为什么C90中函数名可以用作函数指针?
    使用函数名称作为函数指针C90 的基本原理文档深入了解了将函数名称与函数指针等同的设计选择。这种便利简化了在特定上下文中使用函数指针的过程。函数声明考虑声明:int f(); int (*pf)();函数调用以下所有表示有效的函数调用:(&f)(); f(); (*f)(); (**f)()...
    编程 发布于2024-12-23
  • 如何在 Python 中使用多个单词边界分隔符将字符串拆分为单词?
    如何在 Python 中使用多个单词边界分隔符将字符串拆分为单词?
    使用多个单词边界定界符将字符串拆分为单词处理文本数据时,常见的任务是将字符串拆分为单个单词。 Python 的 str.split() 方法提供了一个简单的解决方案,但它仅支持单个分隔符作为其参数。在处理包含多种类型的单词边界(例如标点符号)的文本时,此限制可能会成为障碍。Python re 模块提...
    编程 发布于2024-12-23
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-12-23
  • 为什么 Selenium 在 Chrome 中定位元素时会抛出“NoSuchElementException”?
    为什么 Selenium 在 Chrome 中定位元素时会抛出“NoSuchElementException”?
    "NoSuchElementException" for Chrome with SeleniumIssue尝试在 Chrome 上使用 Selenium 与 QWOP 交互时,始终出现错误消息: selenium.common.exceptions.NoSuchElementE...
    编程 发布于2024-12-23
  • 为什么Java中的静态方法不能是抽象的?
    为什么Java中的静态方法不能是抽象的?
    为什么Java中静态方法不能是抽象的在Java编程中,静态方法不能是抽象的。抽象方法意味着该方法有声明但没有实现,将其留给子类来提供功能。但是,无论是否创建对象实例,静态方法本质上都与类本身相关联。以下示例演示了抽象静态方法的问题:abstract class foo { abstract ...
    编程 发布于2024-12-23
  • 如何将 Qt 调试输出重定向到文件?
    如何将 Qt 调试输出重定向到文件?
    重定向 Qt 调试输出调试 Qt 应用程序时,大量的 qDebug() 和相关语句可能会因过多的调试输出而使控制台变得混乱。对此,开发人员经常寻求一种跨平台的方法来将此输出重定向到文件。Qt方式:qInstallMessageHandlerQt提供了更方便的处理方法使用 qInstallMessag...
    编程 发布于2024-12-23
  • Lambda 与列表推导式:哪种最适合 Python 列表中的元素差异?
    Lambda 与列表推导式:哪种最适合 Python 列表中的元素差异?
    在列表中执行逐元素差异:Lambda 与列表理解查找列表中相邻元素之间的差异是常见操作编程。在 Python 中,有多种方法可以实现此目的,包括使用 lambda 表达式或列表推导式。Lambda 表达式:可以使用 lambda 表达式创建函数动态,然后可用于对列表中的每个元素进行操作。例如:t =...
    编程 发布于2024-12-23
  • 为什么我的 Java HttpClient 文件上传到 PHP 服务器失败,如何使用 MultipartEntity 修复它?
    为什么我的 Java HttpClient 文件上传到 PHP 服务器失败,如何使用 MultipartEntity 修复它?
    使用 PHP 通过 Java 的 HttpClient 上传文件在尝试利用 PHP 将文件从 Java 上传到 Apache 服务器时,利用 Jakarta 创建了一个 Java 应用程序HttpClient 库版本 4.0 beta2。然而,PHP 脚本无法识别上传的文件,导致 $_FILES 数...
    编程 发布于2024-12-23
  • 如何使用 PIVOT 运算符在 SQL Server 中转置数据?
    如何使用 PIVOT 运算符在 SQL Server 中转置数据?
    如何使用 PIVOT 转置 SQL Server 数据SQL Server 中的 PIVOT 运算符允许您将行转换为列,将数据从垂直方向的形式变为水平方向的形式。当寻求基于多个属性汇总数据时,这非常有用。示例数据和所需输出考虑以下起始数据集:SELECT Name1, Name2, Value FR...
    编程 发布于2024-12-23
  • Go 中是否有类似于缓冲通道的缓冲锁定模式?
    Go 中是否有类似于缓冲通道的缓冲锁定模式?
    Go 中的缓冲锁定模式在 Go 中,缓冲通道允许通信继续进行而不会阻塞,直到缓冲区填满。然而,是否存在类似的缓冲锁模式来限制对特定数量的客户端的资源访问?管理对资源的并发访问的原语是信号量。使用缓冲通道可以轻松实现信号量。这里有一个示例:var semaphore = make(chan struc...
    编程 发布于2024-12-23

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3