前言
想给小游戏做个时装功能,在游戏中一般来说换装分为两种:
整体时装
局部换装
2D 游戏中一般用到的骨骼动画 Spine 和 DragonBone(龙骨)。这里主要学习一下 Spine 换装的相关实现
Spine
Spine 是一套针对 2D 骨骼动画编辑工具,最终导出的动画文件结构:
.png 文件
骨骼贴图集合
atlas
骨骼文件信息
json
骨骼动画信息
使用时创建 sp.Skeleton 组件,导入动画文件即可。
Spine 动画信息又分为:bone -> slot -> attach 这样的结构,其中 attach 可以和贴图画上等号。
整体时装
这种方式比较简单,2 种做法:
Spine 动画中创建皮肤,通过 api setSkin 来设置即可。
时装独立导出动画,代码直接替换新的 sp.SkeletonData
局部时装
局部换装相比较整体时装,稍微麻烦一些,也有 2 种做法:
- 生成挂点
Cocos 官方 spine 扩展 AttachUtil.js
1 | /** |
使用示例
1 | const skel: sp.Skeleton = this.skelNode.getComponent(sp.Skeleton); |
- 替换 attach
1 | function updateRegion(attach: sp.spine.RegionAttachment | sp.spine.MeshAttachment, tex2d: cc.Texture2D) { |
使用示例
1 | function async updateAttach(skel: sp.Skeleton, slotName: string, texture2d: cc.Texture2D) { |
替换素材及效果:
