Questions tagged «spritesheet»

一组精灵,它们作为一个图像加载到内存中。

9
如何将游戏中的所有图像都放入一个文件?
我刚刚完成了一个用C ++ SFML编写的基本RPG游戏,我在游戏中付出了很多努力,我想分发它,但是遇到了一个小问题。 问题是,我有200多个图像和地图文件(其中包含地图代码的.txt文件)都与可执行文件位于同一文件夹中,当我查看该文件夹时,这让我想哭一点如此众多的资源,我从未见过一款可以直接向您显示所有资源的游戏,相反,我相信它们会将资源打包在某个文件中。 好吧,这就是我要达到的目的:我希望将所有图像打包到1个文件(可能也包括.txt文件)中,然后能够从该文件中读取或轻松添加到其中。
67 c++  assets  sfml  spritesheet 

2
在浏览器中,最好使用一个巨大的Spritesheet还是使用许多(10000)个不同的PNG?
我正在jQuery中创建一个游戏,在其中使用了大约10000个32x32瓦片。到目前为止,我一直单独使用它们(没有精灵表)。一张普通的地图使用大约2000个图块(有时会重复使用PNG,但是所有单独的div),其性能范围从稳定(Chrome)到有点落后(Firefox)。每个div均使用CSS进行绝对定位。无需在每次更新时更新,只需加载新地图即可。 对于像CSS一样使用CSS背景定位的div使用spritesheet方法,性能会更好吗? 先感谢您!


9
有没有一种工具可以从1000个PNG中制作一个Spritesheet?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 我的图形设计师在单独的PNG文件中制作了图形。是否有一个巧妙的工具/脚本将它们混成一张Spritesheet? 我可能自己也可以编写一些代码,但是为什么要重新发明轮子呢:)

9
创建Spritesheet动画的提示和工具
我正在寻找一种可以轻松创建子画面的工具。 现在我正在使用Illustrator,但是我永远无法使角色的中心位于确切的位置,因此看起来好像它在四处移动(尽管始终在一个位置),同时在子画面中循环。有什么更好的工具可以使用吗? 另外,对于使用Sprite工作表,您会给出什么样的提示?我应该在单个图层(左臂,右臂,身体等)中还是同时一次创建角色的每个部分?任何其他提示也将有所帮助!谢谢




3
在2D空间游戏中伪造等距图形
首先,我确切地知道我的绘图问题是什么,并且对于如何解决该问题我有各种想法。我在这里要弄清楚如何调整绘制的帧,以便保持等距的“幻觉”。 我正在编写在太空中进行的2D鸟瞰游戏。我试图在Up是北方的世界中使用等轴测图形,而游戏世界不会像传统的等轴测游戏那样旋转(请记住,游戏是在太空中进行的,没有地形)。这是我尝试使用的一个示例精灵:http : //cell.stat-life.com/images/stories/AsteroidOutpost/Spaceship64.png围绕其自身的垂直轴旋转了64次,视角为35度(又名iso)。图像已生成,因此可以更改。 为了清楚起见,我已指定北(上)为0度,东(右)为90度。 我的问题是,由于所使用的3D平面存在差异,我的精灵并不总是看起来像面对游戏一样。不知道我是否正确使用了术语,但是我的飞船是在一个平面上旋转的,而查看平面期望事物在其自身的平面上旋转。这是问题的描述: http://cell.stat-life.com/images/stories/AsteroidOutpost/ProjectionIssue.png 左边是侧视图,右边是自顶向下的视图。在顶部,我可以看到太空飞船/精灵表的世界。在底部,我具有将精灵绘制到屏幕上时的外观。 右上角是我的飞船如何旋转的简化版本(每帧之间的角度间隔均匀)。右下角是在屏幕上绘制特定角度时,精灵看起来像面对的角度。该问题在45度左右最为明显。这是一张覆盖有“屏幕平面”线的图像,该线指向该船应该面对的方向:http : //cell.stat-life.com/images/stories/AsteroidOutpost/Spaceship64RedLine.png红线应始终指向与船完全相同的方向,但是如您所见,投影问题正在引起问题。我希望我已经很好地描述了这个问题。 编辑: 红线在屏幕平面上旋转,而太空飞船在“船平面”上旋转,因此绘制时船角和屏幕角度之间存在较大差异。 结束编辑 当这艘船向应该向前方射击的一侧偏离目标的位置发射激光束时,看起来很奇怪。 所以...我想出的解决方案是: 停止尝试伪造等轴测图,变大或回家。已经旋转了我的世界。(PS:这可以解决我的问题,对吗?) 更改我的Sprite表(以某种方式),使其具有表示模型将被查看的“屏幕角度”的框架。因此,当我要求提供45度的图像时,它实际上看起来像是在屏幕上面对45度。 更改我的Sprite渲染系统以从Sprite工作表中抓取一个不同的帧(以某种方式),因为知道抓取“正常”帧看起来会很有趣。因此,与其抓取45度的框架,不如抓取33度的框架(只是猜测),使它对用户而言看起来是正确的。 只需使用3D!真是太容易了 例如:您会推荐哪种解决方案?我倾向于2,即使我知道这是错误的。请记住,我有权使用Sprite生成工具。方法3是我的第二选择。这两种方法都只需要我对角度应用一些数学运算即可得到所需的结果。顺便说一句,我在其中添加了#4作为玩笑,我不想转向3D。 对于两个:使用方法2或方法3,如何调整输入或输出角度?我对3D投影和3D矩阵(更不用说2D矩阵)以及任何其他数学方法可以达到我想要的结果都不太满意。 在这里大声思考:如果我将一个单位矢量面向我要看的船的方向(在屏幕平面上),然后将其投影到船平面上,然后找出那条投影线与飞机平面之间的夹角北方是,我应该具有要显示的船舶图形的角度。对?(#3的解决方案?)伙计...我无法解决。 编辑: 我知道这个问题是很难用静态图像可视化,所以我遵守我的雪碧库Visual测试仪显示的问题:http://cell.stat-life.com/downloads/SpriteLibVisualTest.zip它需要XNA 4.0此应用程序只需旋转精灵,然后从其中心向外以游戏认为船应面对的角度画一条线。 编辑9月8日 继续我的“大声思考”段落:我认为我可以采用朝北的单位矢量(0x,1y,0z),而不是使用投影(因为它看起来很难),而是使用矩阵将其旋转到角度精灵实际上是面向的,然后围绕X轴再次从“查看平面”向外旋转到“精灵平面”,然后……变平?仅使用X和Y(忽略Z),向量(基本上是将其投影)回到视平面上。然后,使用新的扁平化矢量,我可以确定其角度并将其用于...某物。我待会再考虑。 编辑9月8日(2) 我尝试从上面遵循我的想法,并取得了一些成功,是的!所以...为了使一条红线看起来像是从我的飞船中出来(仅出于测试目的),我做了以下工作: Vector3 vect = new Vector3(0, 1, 0); vect = Vector3.Transform(vect, Matrix.CreateRotationZ(rotation)); vect = Vector3.Transform(vect, Matrix.CreateRotationY((float)((Math.PI / 2) - MathHelper.ToRadians(AngleFromHorizon)))); Vector2 …

5
如何处理尺寸不一致的Sprite板?
对于具有spritesheet 不均匀精灵的尺寸,我怎么可以得到边界,矩形为每个精灵(即蓝色框下面的图片/我只画了几个例子)? 我想确定的是: offset_x, offset_y, width, height 到目前为止,我仅使用了所有精灵都具有相同尺寸的精灵表。在那种情况下,只需要指定x和y偏移即可获得特定的精灵。然而,对于spritesheets 非均匀的尺寸,这并不工作。 编辑:阅读完评论和答案后,我改写了我的问题,以使其更具包容性。在游戏中使用Spritesheet的实际过程。以前,该问题包含以下要点:人们为什么会生成尺寸不一致的Spritesheet,以及我该如何处理。

1
Sprite Mode为Multiple时,如何以编程方式访问单个Sprite?
Unity 4.3新增了一项功能,可以将子画面表分割为多个单独的子画面。这很有用,因为您只需要一个主Spritesheet,但是仍然可以引用单个Sprite。通过将Sprite Mode设置为Multiple来完成。 可以从Unity Sprite Editor中以编程方式访问从主文件生成的所有Sprite吗? 例如:我有一个带有50x50精灵网格的Spritesheet。使用Unity Sprite Editor,我现在有250个Sprite :spritesheet_0, spritesheet_1, ..., spritesheet_249。如何获得一个句柄,spritesheet_102而不必在Unity编辑器中手动将其拖放?

1
精灵表纹理拾取相邻纹理的边缘
我有一个自定义的精灵例程(openGL 2.0),该例程使用一个简单的精灵表(我的纹理彼此水平排列)。 因此,例如,这是一个带有2个简单纹理的测试精灵表: 现在,我在创建openGL Sprite对象时要做的就是在其图集中指定帧的总数,并且在绘制时指定要绘制的帧。 然后计算出从何处获取纹理的方式: 将所需的帧数除以总帧数(以获得左坐标) 然后将1除以总帧数,然后将结果加到上面计算出的左手坐标上。 这似乎确实有效,但有时会遇到问题。比如说,我想在下面画X,我得到........... 我听说过在每个纹理之间放置1 px的“填充”,但是有人可以确切解释它是如何工作的吗?我的意思是,如果这样做,它肯定会取消获得纹理的计算。 如果我简单地在所拾取的纹理中包括填充(因此使用空白边框绘制精灵),那么这肯定会导致碰撞检测问题吗?(即,当透明零件发生碰撞时,使用边界框时,精灵可能会发生碰撞)。 如果有人可以解释,将不胜感激。

3
如何分解精灵表
我有很多Spritesheets格式不佳,我想分解它们,或分解成许多小图像,每个Sprites一个。如果可以,我可以使用自定义纹理打包器工具来构建游戏资源。 我的开发工具是针对Windows的XNA和C#。如何分解图像?

1
带有缓冲对象和着色器的精灵表
用着色器和缓冲区处理子画面的“最佳”方法是什么?在即时模式下,绘制精灵时修改其texcoords很容易,但是我不知道如何使用现代的opengl来实现。我应该将所有texcoords存储在缓冲区中并为每个sprite更改指针,还是有更好的方法?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.