创建智能和快速的精灵表
Posted
技术标签:
【中文标题】创建智能和快速的精灵表【英文标题】:Creating Smart and Fast Sprite Sheets 【发布时间】:2017-04-05 15:19:54 【问题描述】:我的目标是能够创建一个游戏角色,让我可以毫无问题地绘制新的盔甲并为其制作动画。我将在 flash 1 对象中绘制,并在我的预制动画中为该对象设置 flash 动画。之后,我会将提供的帧粘贴到精灵表中,并将其粘贴到我在游戏中构建的算法中,该算法将为其设置动画。所以recap,只画一帧,自动为其设置动画并将帧放入java读取的sprite sheet中。
我现在唯一遇到的问题是高效地创建sprite sheet。我当然必须坚持为我的精灵表设置一个大小,范围可以是 128x128 或 256x256。有效创建精灵表的好方法是什么? Flash 的内置精灵表并不好,因为它不会创建设置正方形,而是根据图像示例的大小为 126x86 或其他东西来划分它。我现在能想到的最好的方法是手动粘贴每个单独的部分并确保自己正确放置它们,然后擦除边框。虽然,这不是我的目标,但在为我的角色制作新的盔甲时,我想快速且省力。
我是不是用错了 Flash sprite sheet 生成器?什么可能是我从 Flash 创建具有设定大小的快速精灵表的最佳方式?感谢您花时间阅读本文,所有答案都会有所帮助。
以下是我生成精灵表时 flash 所做的一些图像。它看起来相当不错,尽管问题是有太多的空白。这些碎片在我拥有的 128x128 方格中并没有均匀分布。它们占据了大约 2/3 的宽度。
【问题讨论】:
【参考方案1】:您实际上必须在 spritesheet 中坚持使用方形框架。通常的方法是优化 spritesheet 图像,使其可以有效地存储并上传到渲染上下文。通过这种方式,您将通过修剪空白空间、将它们以有效的顺序(不一定与动画中的顺序相同)并以直角旋转帧来将动画帧紧密地打包。所有这些都允许存储更小的纹理。自然,如果您使用这些优化中的任何一种,您将不得不存储一些贴图数据以及纹理;您还需要一些可以正确读取数据和显示动画帧的代码,对纹理应用平移和/或旋转。
您可以使用许多现有的格式和库(请参阅下面的视频)。除了 Animate 之外,还有 a number of tools 可以生成 spritesheets 并优化纹理(真的有很多)。如果您对从 Animate 获得的内容不满意,您也可以考虑使用 Animate 生成全帧 PNG 序列并使用不同的工具来打包 spritesheets。您创建 spritesheet 的方式与您使用的显示引擎(即 Stage3D)无关,而是与您用于处理生成的纹理的库相关。
There's a video 解释 adobe 动画精灵表。从 2:50 开始,它解释了数据格式和修整。如果您愿意,可以使用 Animate 创建全帧 spritesheet:这样您就不必使用库来播放 sprite 动画,但您将存储更大的纹理并且可能无法满足 2048x2048 纹理大小Stage3D 的限制。
【讨论】:
以上是关于创建智能和快速的精灵表的主要内容,如果未能解决你的问题,请参考以下文章