通过自己在开发的游戏过程中发现有几种做碰撞检测的方法:
1. 只在unity中添加collider
这是最简单的一种。在Spine中编辑好骨骼动画以后导入到unity中,让后spawn bone就可以得到在Spine中的骨架,然后在需要的骨骼上加上collider。这种方法对于简单的碰撞应用还可以,但是复杂一点就不好用了,比如在某一帧需要去掉碰撞,这就做不到。而且在编辑collider的时候对于复杂多变的bone也很不好勾勒碰撞区。
2.在Spine中添加专用的碰撞骨骼
在Spine中可以专门多创建一些额外的骨骼(attach上一张纯色矩形图片作为碰撞区域)用来作为碰撞检测用,这样就可以在K动画的时候在每一帧缩放这些骨科老调整碰撞局域,如果将骨骼缩放为0那么那一帧实际上就没有碰撞局域了。
当然这种方法也有缺点,这样的碰撞区域虽然会随着骨骼缩放,但是只能用矩形的collider,这样势必没有那么精确。
注意:在做骨骼的时候,要注意骨骼的起点要落在纯色图片的中心,这样在unity中添加collider的时候,collider位置才会正确,否则会有偏移。
3.使用Spine中的bounding box
这是目前我找到的最好的碰撞解决方案。在Spine中可以给贴图添加上bounding box,这个box其实是一个多边形,可以在K动画的时候影藏,也可以随着贴图的骨骼缩放,甚至还可以像mesh一样对他的顶点进行拖拽来调整边框,这种方法非常灵活,精确,在导入到unity后可以通过bouding box来自动生成polygon collider。