目录
一、动态绳索 (可移动根节点)
二、静态绳索
三、利用Skinning Editor(Unity2022.3.15f1正常使用)
四、注意事项
一、动态绳索 (可移动根节点)
动态绳索 DynamicRope空物体
Anchor和whitecircle是相同位置的物体,Anchor是一个没有SpriteRenderer,仅有2D刚体和HingeJoint2D。
1、所有DynamicRope下的物体都有2D刚体,且都为Dynamic类型
为了表现效果,可以将绳索节点whitecircle的物体质量设置为2,ball质量为3,ball重力调为1.5
2、所有DynamicRope下的物体都有HingeJoint2D组件,除了Anchor以外的HingeJoint2D组件均以上一个物体作为连接节点,例如whitecircle身上的会用Anchor的2D刚体作为连接节点,其他以此类推。【注意:Anchor的HingeJoint2D组件的Connect Rigid Body是空的】
3、所有绳索节点都挂载了一个2D碰撞体如下
物体摆放和HingeJoint2D的Anchor锚点以及节点旋转角度限制情况如下图
(蓝色点是锚点,每个物体的锚点均连接到上一个物体底端)
绿色扇形是节点旋转可旋转角度范围,这个范围的设置有点怪的,如果你设置和我一样但结果不同请自行调整。
Anchor物体的节点旋转范围可以不做限制,如果做了限制根节点则无法让绳索360度旋转。
不勾选Use Limits即不做限制。
运行游戏后,动态绳索只能移动Anchor空物体,去带动整个绳索移动,不能移动其他物体,即使移动DynamicRope物体,也是有问题的。
特别注意:第一个whitecircle节点不要勾选,其他节点需要勾选它,保证锚点自动同步。
如果你制作的是静态绳索,则不会有该问题发生,可以保持勾选。
若勾选了会导致该第一个节点的锚点会随着移动而变化,会不断往下掉。
二、静态绳索
StaticRope挂2D刚体,改为如下图配置
其子节点的情况和动态绳索一样,挂载2D刚体、HingeJoint2D以及2D碰撞体,区别在于没有Anchor空物体作为节点头部,而是直接以whitecircle作为第一个节点,它连接的2D刚体是StaticRope的2D刚体。
运行游戏,使用了一个脚本对staticBall 2D刚体施加一个爆发力就能看到效果。
staticRopeBall.AddForce(new Vector2(staticForce, 0), ForceMode2D.Impulse);
三、利用Skinning Editor制作骨骼绳索(Unity2022.3.15f1正常使用)
需要导入2D Animation
有部分Unity版本会不支持会发生各种报错,可以更换Unity版本解决如我的版本或搜索其他版本。
选中我们要编辑生成骨骼的精灵图片,我的是一张50*50,但内容只有20*50的白色图
双击图片内容,白色部分,会出现一个橙色框
点击创建骨骼,然后在橙色框内可以左击生成骨骼,移动鼠标再次点击后决定骨骼结束点,完成一个骨骼的生成,骨骼是指上面的那些五颜六色的箭头,每一个都是一个骨骼节点。
点击右击可以取消当前操作。
点击Edit Bone后,可选中骨骼节点进行编辑位置和旋转,务必保证角度一致(垂直朝向),最好保证骨骼高度一致。
点击Auto Geometry,调整参数后生成几何体,最终点击Apply保存图片
拖拽图片成为物体,挂载Sprite Skin组件,生成骨骼节点
进行如下操作把嵌套的骨骼节点拆开,变成不嵌套的子物体。
之后则是与动态绳索或静态绳索一致的创建流程了,组件情况如下:
Anchor和bone_1保持一致的Transform
bone_1(第一个节点)务必保证如下图设置Hinge Joint 2D组件
Anchor不做角度限制,其他节点做角度限制
这个角度限制要可能不同版本会有不同的设置方式,结合自身情况调整吧
四、注意事项
1、关于绳索节点图片,使用的是50*50的白色圆形图片,不要有多余的透明区域,否则会影响绳索表现,例如图片留白很多,绳索节点的形变会很抽象,还有使用长方形图片也有点抽象,尽量选择相同宽高的图片作为节点。
2、上面提到了动态绳索的第一个节点whitecircle物体的Hinge Joint 2D组件不要勾选Auto Configure Connected Anchor,除了这个情况以外都保持默认勾选状态。你可以勾选测试下会发生严重的锚点偏移。
3、骨骼绳索的制作骨骼,若你想拉伸制作完成后的绳索,那么它的碰撞体是不会变化的,所以要手动调整或脚本调整;若你的骨骼节点高度不一样的话,基本上每个节点的碰撞体参数会不一样,调整起来会非常麻烦,所以制作骨骼时要保证高度一样,也有点麻烦。