网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月27日漏签0天
godot吧 关注:9,036贴子:40,700
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 29回复贴,共1页
<<返回godot吧
>0< 加载中...

精灵表sprite sheet打包生成和分割工具

  • 只看楼主
  • 收藏

  • 回复
  • 雷伊盖亚0
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
精灵表sprite sheet打包生成和分割工具 以及godot导入插件
使用到两个工具为
1、godot 插件 TexturePacker Importer (这个插件本是TexturePacker一款收费软件的导入器
但下面的工具导出格式与TexturePacker类似,故可使用它)
https://godotengine.org/asset-library/asset/169
2、开源在线sprite sheet打包或分割工具
在线版 https://free-tex-packer.com/app/
本地软件下载(能够支持图片分文件夹) https://free-tex-packer.com/download/
源码 https://github.com/odrick/free-tex-packer
使用的素材为godot开源教程ARPG 的player.png (B站 有搬运的翻译教程)
https://github.com/uheartbeast/arpg-reference/blob/master/Sprites/Player/Player.png
1 手边没有单独的图片 故先使用分割工具将精灵图分割成单独的图片 默认参数可以满足需要

2 点击添加zip 将分割后生成的压缩包导入 具体内容 如下图
(由于没有允许修剪在后来使得图片存在多余空白)

3 导出前的最终设置结果 点击图中导出按钮(在2048数字上面)

4. 导出结果 (另一种tileset导出格式会将.tpsheet替换成.tpset文件 ,texture.png相同)

5 将上述两个文件导入godot 在没有启用插件时tpsheet文件不能显示在编辑器中

6 启用插件后 重新导入自动生成atlasTexture

7 使用atlasTexture 在需要的地方 直接使用对应的精灵atlasTexture
atlasTexture 能够提升性能 节约内存 在运行时加载一次整张精灵表
使用单个精灵时 会自动从精灵表中根据区域截取对应的精灵

8 由于在 导出精灵表时没有启用修剪 出现了7图中精灵多余空白区域 并且未居中
笨办法补救如下图 (如果要删除重新导入 记得把插件暂时关闭)

9 tileset导出类似
导入插件根据tpset生成的.tileset文件可供tilemap绘制


  • 雷伊盖亚0
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
其实godot有内置的sprite sheet打包
其原理是将图片资源由默认Steamtexture导入为AtlasTexture文件
同时将这些分散的图片整合生成一个Steamtexture类型的sprite sheet精灵表
方法如下



2025-08-27 19:26:07
广告
不感兴趣
开通SVIP免广告
  • 使者丶n
  • 虚拟现实
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
感谢吧主的教程,看了教程学会了精灵表打包,分割,也能用AnimatedSprite制作成动画了。
现在遇到了2个问题:
1、怎么用Sprite和AnimationPlayer制作动画呢?
2、教程图片的攻击序列帧碰撞区域的大小不一致的情况怎么处理?
请指教一下。


  • 雷伊盖亚0
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@使者丶n
Sprite和AnimationPlayer制作动画 同理可以用关键帧修改碰撞区域的大小
下图为.gif动图 手机端点击查看


  • 使者丶n
  • 虚拟现实
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是官方文档里面的第一个实例教程,官方教程是用AnimatedSprite来实现的。
我想加深一下对Godot的学习,用Sprite和AnimationPlayer来实现。

运行结果:当出现fly动画的时候,全部的动画就变成这样了。


用轨道属性把fly的碰撞区域改成下面的。


  • 雷伊盖亚0
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
@使者丶n
如果对于不同的敌人要设置不同的碰撞形状 就需要新建多个动画 然后根据敌人类型选择要播放的动画来修改敌人的碰撞形状 这种思想就是面向对象 所有对象继承同一个类 所有对象具有一些相同的属性 有些实例化不需要变 有些需要变 在实例化时要重新设置参数


  • 使者丶n
  • 虚拟现实
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


我的想法是在初始的时候随机播放动画,然后根据不同的动画来在动画的属性轨道里面改变碰撞区域的宽度,结果就出现6楼的情况了。是我的想法不可行?还是想法可行,操作上出问题了?


  • 雷伊盖亚0
  • 小吧主
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我也用animationPlayer 和Sprite 改写了教程中的animatedSprite
下面两张gif动态(前一张是有问题的,后一张是解决后) 手机端点击查看
问题图(可以看到碰撞形状 在不同敌人类型时 碰撞形状同时改变 明显是因为共用同一个碰撞资源)

这是解决后 可以看到图中出现多种碰撞形状 根据敌人类型设置
只是往代码中添加了(图中第11行)
$CollisionShape2D2.shape = $CollisionShape2D2.shape.duplicate()
这就是在实例化敌人时 将碰撞形状自我复制 duplicate()方法参数默认为false具体可看文档


2025-08-27 19:20:07
广告
不感兴趣
开通SVIP免广告
  • 使者丶n
  • 虚拟现实
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

问题已解决,非常感谢吧主的耐心指导。就那一行代码,昨晚搞了一晚,今天搞了一上午,真的非常感谢吧主。还有一个小问题,请教一下吧主,这个默认项目路径在哪里设置呢?


  • dahdjfde
  • godot
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大佬有微信或者群吗,求加


  • 灬青云直上灬
  • GDScript
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个挻好用的,用来搞素材


  • 文艺家的青年
  • 数学算法
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
实测free-tex-packer生成的图片会有问题的。一些透明背景会莫名其妙多一些可观测到的多余像素。对比texturePacker导出来的同一个素材源做成动画一起展示,一下就看出来了
对于素材要求不高的可以忽略


  • 文艺家的青年
  • 数学算法
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
作为对比,1,2,4都是free-tex-packer生成的,有额外压缩和未压缩过的,这个压缩没影响到乱显示莫名其妙的像素点,3和5是texturePacker导出来的,一个是未压缩的,一个是经过PS处理的,但是都没出现莫名其妙的像素。


  • CGfan1984
  • godot
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 29回复贴,共1页
<<返回godot吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示