spine-unity 2D和3D物理

December 2nd, 2019

Hinge Chain Demo

我们很高兴地宣布,我们改进了spine-unity运行时中的HingeJointHingeJoint2D链!可为你的角色增添更逼真的cape物理效果,让它四处拖动重物,挥舞流星锤等等。

HingeJointHingeJoint2D组件用于连接RigidbodyRigidbody2D,约束它们使其像有一个铰链连接着那样移动。很适合用于门,也可以用来模仿铰链、钟摆等类似物体。正确设置后,Unity的物理机制会向所有链元素应用动量和碰撞反应。但有一个重要要求是所有链元素必须在同层级平铺,而非构成父子级关系。

以前的功能

你可能注意到这个功能在以前的spine-unity版本中已经存在,也许你试用过,但是无论如何调整Rigidbody参数,结果都不令人满意。原因在于应用了引力,但是无法捕获骨架或父骨骼的移动,因此缺乏动量。自spine-unity 3.8起,物理装配会遵循动量,翻折骨架时会正确工作。

创建铰链

2D和3D铰链从现有的SkeletonUtilityBone层级创建。

Hinge Chain Setup

选择第一个SkeletonUtilityBone链元素,在检视器中选择创建3D铰链创建2D铰链来生成物理装配。选中的元素及所有其SkeletonUtilityBone子级将变成一个铰链。调整Rigidbody拖曳和质量参数以获得想要的结果。增加拖曳值将使Rigidbody移动更慢,制造出沉重或与空气相互作用的效果。

注意链的根节点不再以骨架骨骼为父级,而是放在场景的最高层级。Unity中要求如此才能正确应用动量。不要再将链的根父级重新设置为骨架骨骼,否则链元素将不再受骨架移动的影响!

2D铰链

  1. 像往常一样创建你的SkeletonUtilityBone hierarchy
  2. 在场景面板中选择第一个链元素,在检视器中选择创建2D铰链以创建2D铰链装配。 Create Hinge Chain 2D
  3. 这将从前一父级中(例子中为cape-root)删除GameObject链并在场景顶级放置一个新的HingeChain Parent GameObject,如上提到的,不要再将此GameObject的父级重新设置为骨架! Hinge Chain 2D Hierarchy
  4. 调整链元素Rigidbody拖曳和质量参数以获得你想要的效果。

注意此GameObject包含两个子对象,名为Hinge ChainHinge Chain FlippedX,当翻转骨架时,将自动启用和禁用这些GameObject实例以实现各自的铰链。

3D铰链

  1. 像往常一样创建你的SkeletonUtilityBone hierarchy
  2. 在场景面板中选择第一个链元素,在检视器中选择创建3D铰链以创建3D铰链装配。 Create Hinge Chain 3D
  3. 这将从前一父级中(例子中为cape-root)删除GameObject链并在场景顶部层级放置一个新的HingeChain Parent GameObject,如上提到的,不要再将此GameObject的父级重新设置为骨架! Hinge Chain 3D Hierarchy
  4. 调整链元素Rigidbody拖曳和质量参数以获得你想要的效果。

在翻转骨架时,HingeChain Parent GameObject将自动旋转180度以将铰链调整到翻转的骨骼位置。

这些spine-unity运行时的新增功能让物理更容易影响骨架,实现更动感的行为。欢迎在Spine论坛分享你的想法和作品!