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

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

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

设置碰撞器

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

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

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

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

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

  • 8
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值