Spine动画在Unity中碰撞器的跟随(碰撞检测)


前言

spine做好的动画导出到unity后,直接给动画对象添加碰撞器是可以的。
但会发现物体进行动画播放时,设定好的碰撞器不会随着动画而动,表现就是碰撞器停留在初始位置,对象随动画移动。
如图所示:
在这里插入图片描述
原因是此时物体Transform根本没有任何变化,自然碰撞器不会跟着移动。


1.使用BoneFollower组件

看看文档的描述:

在这里插入图片描述

该组件的作用就是使其依附的物体跟随指定的骨骼。

具体用法

  • 在需要的物体下创建子物体,添加BoneFollower组件,并选择Bone Name需要跟随的骨骼,再添加碰撞器。
    运行会发现该物体的Transform开始改变,碰撞器自然跟随变化。
    在这里插入图片描述
  • 另外一种用法适用于在Spine添加了边界框(bounding box)的情况。
    边界框是Spine创建动画时一种多边形,类似于Unity中的Polygon Collider。

查看导出资源是否添加边界框可以通过查看骨骼json文件
搜索boundingbox既可
在这里插入图片描述

  1. 在物体上添加BoundingBoxFollower组件,提示“理想做法是将组件添加到子物体上”,点击下面的按钮会创建一个子物体并自动添加组件。
    在这里插入图片描述
  2. 在Slot选择带有边界框的Slot,会自动生成一个Ploygon Collider 2D。
    在这里插入图片描述
  3. 点击BoundingBoxFollower组件上的“Add Bone Follwer”会自动添加BoneFollower组件。同样选择要跟随的骨骼即可。
    在这里插入图片描述

BoundingBoxFollower:
BoundingBoxFollower

2.使用SkeletonUtility组件

SkeletonUtility:
在这里插入图片描述

这个组件就是将原本物体的骨骼层次拆分出来,形成像2D Animation那样的骨骼层次结构。

具体用法:

在这里插入图片描述

关于override和follow的区别在文档里写的很详细了。 SkeletonUtilityBone
override模式下可以拖动骨骼,一般选follow即可。
通常可以选择使用上面的第一种 BoneFollower 跟随方式,简便且更节省性能。
在这里插入图片描述

点击上面的按钮后会生成对应骨骼层级,选择root下的骨骼,运行会发现骨骼的Transform得益于SkeletonUtilityBone组件已经可以发生变化。此时在对应的骨骼下添加碰撞器即可。
在这里插入图片描述


总结

来自ChatGpt的总结:
该篇博客介绍了在将Spine动画导出到Unity后,解决动画对象碰撞器不跟随动画而停留在初始位置的问题的两种方法。

第一种方法是使用BoneFollower组件,该组件的作用是使其依附的物体跟随指定的骨骼。具体用法是在需要的物体下创建子物体,添加BoneFollower组件,并选择需要跟随的骨骼,再添加碰撞器。通过这种方式,物体的Transform会随着动画变化,从而使碰撞器也跟随变化。

第二种方法是使用SkeletonUtility组件,该组件将原本物体的骨骼层次拆分出来,形成类似2D Animation的骨骼层次结构。使用SkeletonUtility时,可以选择override或follow模式,一般选用follow即可。通过创建对应骨骼层级,并在对应的骨骼下添加碰撞器,骨骼的Transform会受到SkeletonUtilityBone组件的控制,从而实现碰撞器的跟随。

作者还提到了在Spine中添加边界框(bounding box)的情况,边界框类似于Unity中的Polygon Collider。对于带有边界框的物体,可以使用BoundingBoxFollower组件,点击"Add Bone Follower"会自动添加BoneFollower组件,并选择要跟随的骨骼。

最后,作者指出第一种方法BoneFollower更简便且更节省性能,推荐在大多数情况下使用该方式解决碰撞器跟随动画的问题。

整篇博客详细介绍了两种方法的具体步骤,并附上了相应的截图示例,方便读者理解和操作。

猜你喜欢

转载自blog.csdn.net/RainWind777/article/details/132000628