当前位置:   article > 正文

Unity中Spine动画的骨骼控制_unity spine获取骨骼位置

unity spine获取骨骼位置

在本人撰写的《Unity中使用动画状态机控制Spine动画》中介绍了在Unity中使用Animator来控制Spine动画的播放、切换等基本操作,接下来介绍Spine动画在Unity中控制Spine骨骼。

生成骨骼物体

Spine动画资源导入到Unity中后生成了一个物体,此物体不带任何骨骼信息,为了控制骨骼,需进行以下步骤生成骨骼物体,以便进一步操作。

在Spine动画对象的物体的SkeletonMecanim(或者SkeletonAnimation)组件上,展开Advanced选项,点击“Add Skeleton Utility”按钮,此时在同一物体上生成了一个SkeletonUtility组件。

点击SkeletonUtility组件上的“Spawn Hierarchy”按钮。

这里我选择“Follow all bones”选项。

 

 

此时在Spine动画对象的物体中生成了一系列子物体,展开root物体即可看到所有的Spine骨骼生成而来的物体。接下来便可在这些物体上进行一些操作。

用程序控制骨骼

Spine动画可以控制骨骼的位置、缩放、旋转等属性,以便实现一些需要程序计算以配合动画表现的效果。
例如:

  1. using Spine.Unity; //引入SkeletonMecanim的命名空间
  2. void Update()
  3. {
  4. //这里使用SkeletonMecanim的方法来控制骨骼
  5. //获取组件引用
  6. SkeletonMecanim skeletonMecanim = GetComponent<SkeletonMecanim>();
  7. //根据名字获取骨骼引用
  8.     var bone = skeletonMecanim.Skeleton.FindBone("bone01");
  9. //每帧改变骨骼位置
  10.     bone.X += 0.01f;
  11. }

其他骨骼控制的API可在Spine官方文档中查阅。 

设置碰撞器

每一个生成的骨骼物体上都有一个SkeletonUtilityBone组件,可以设置参数对动画表现产生影响。同时每个骨骼物体也是一个普通的Unity的GameObeject,可以在上面做添加组件等基本操作。

注意到SkeletonUtilityBone组件上有一项“Bounding Boxes”,此时是无法点击的,因为动画师没有在这里设置边界框。

Spine动画中的边界框是附加到骨骼上的多边形。和其他附件一样,当骨骼变换时,该多边形也会变换。边界框可用于运行时进行撞击检测、创建物理主体、产生粒子效果等等。

动画师在骨骼上添加边界框后,导入到Unity中,即可在相应的骨骼物体的SkeletonUtilityBone组件上看到如下选项:

点击图中框选的按钮即可创建一个带有碰撞器组件的子物体。可以再次微调碰撞器边界,在代码中进行编写碰撞器相关逻辑。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/117878
推荐阅读
相关标签
  

闽ICP备14008679号