[Unity] 使用 Animation Rigging 制作瞄准 IK 1
1. 安装 Animation Rigging Package
官方的,直接在 package manager 里面就能看到
2. 配置 Rig先点击角色 Perfab
打开 Perfab
点击菜单栏中的 Animation Rigging - Rig Setup,给这个 Perfab 配置 Rig
这时,Perfab 身上会多出一个 Rig Builder 组件
Rig Builder 用于与 Animator 配合,所以要和 Animator 在同一个 GameObject 上
Perfab 里面也会多出一个 Rig
Rig 用于收集其子物体的 Rig Constraints 并生成列表,然后交给 Rig Builder
Rig 要与骨骼的根节点同一层级
为了方便看,在 Perfab 中点击 菜单栏 - Animation Rigging - Bone Renderer Setup,显示骨骼
在 Perfab 中就会显示 Bone Render 组件
3. 添加约束在 Rig 底下添加一个空物体,然后在这个空物体上添加 Multi - Aim Constraint
把武器挂在一只手上
为了好看,还是先将枪调整一下,看上去好像是手握着一样
然后对于 Rig 底下新建的空物体的 Multi - Aim Constraint 组件,将挂着武器的手作为 Constraint Object
为了继续配置这个 Multi - Aim Constraint 组件的 Aim Axis 和 Up Axis,要在局部坐标系下看手部的向上的参考轴
为了让局部坐标系的原点落在手部基点,要选择 Pivot 模式,为了显示局部坐标系,要选择 Local 模式
Aim Axis 指向被瞄准的物体,对于我这个手,就是这个绿色的 Z 轴的负方向
Up Axis 指向上方向,这里就是 Y 轴负方向
配置为
哦……后面调试出来我这轴搞错了
原来绿色的是 Y 轴啊……
为了继续配置 Source Objects,需要一个可以瞄准的物体
计划是使用子弹落点作为瞄准点
作为测试可以新建一个小球,然后使用这个小球作为瞄准目标
测试的时候出了这个报错
Transform ‘Weapon_AK12’ not found in HumanDescription.
System.InvalidOperationException: The TransformStreamHandle cannot be resolved.
This Exception as thron from a job piled ith Burst, hich has limited exception support. Turn off burst (Jobs -> Burst -> Enable Compilation) to inspect full exceptions & stacktraces
我找到了一个具有相同问题的
https://forum.unity./threads/issues-ith-adding-eapons-to-a-character-using-animation-rigging.951957/
我这个枪并没有相同名字的子物体……
然后我又找到一个解答
https://forum.unity./threads/animation-rigging-eapon-attachment.920021/
他要我使用 rigbuilder 的 build 方法,再启用 animator
一开始我是使用不了 using UnityEngine.Animations.Rigging;
我还以为是我 package 没装好
一看有一个验证的问题
试验之后这个是我 Unity 账号许可证过期了而已
重新登陆 Unity 账号,获取许可证就好了
还是用不了 using UnityEngine.Animations.Rigging;
后来想到我用了一个 Assembly
向 Assembly 里面添加 UnityEngine.Animations.Rigging 就好了
然后按照那个解答中 unity 官方的意思就是这样写
private void Start() { RigBuilder rigBuilder = GetComponent(); rigBuilder.Build(); Animator animator = GetComponent(); animator.enabled = true; }
如果是要 ait 的话,我也测试过
private void Start() { StartCoroutine(SetRig()); } private IEnumerator SetRig() { yield return ne WaitForSeconds(1); RigBuilder rigBuilder = GetComponent(); rigBuilder.Build(); Animator animator = GetComponent(); animator.enabled = true; yield return null; }
这都不行,报错还是一样的
不把这个武器绑在手上,绑在任意骨骼上,都会有问题
给这个武器添加了 Rig Transform 也有问题
总的来看
如果没有配置 Animation Rigging 的话,那么可以随便在 Perfab 骨骼层级中挂东西
如果配置了 Animation Rigging,那么 Perfab 的骨骼层级中不能加任何多余的东西
这就很奇怪
草……后来发现真的是我有相同命名的物体的问题
我靠……没想到啊
没事了……
5. 身体-手部-头部单纯一个手部是这样
为身体添加了更多约束之后
要注意挂着 Multi - Aim Constraint 的 GameObject 的层级关系从上到下,是骨骼关系中从根到子的顺序
6. 双手持枪新建一个 GameObject 用来放双手持枪的约束
添加 To Bone IK Constraint 组件
先把左手拖进来
右键组件,点击 Auto Setup From Tip Transform
自动配好
添加 To Bone IK Constraint 组件之后,这个 GameObject 底下会自动新建两个 GameObject
一个作为目标,一个用来辅助调整姿态
可以把它们都拖到右手下面
武器是可能从角色身上解绑销毁的,所以不放在武器下面
在运行模式下一点点调这两个物体的 transform,调完了之后复制 transform,退出运行模式,在编辑模式下粘贴回去
效果是这样
空调维修
- 海信电视维修站 海信电视维修站点
- 格兰仕空调售后电话 格兰仕空调维修售后服务电
- 家电售后服务 家电售后服务流程
- 华扬太阳能维修 华扬太阳能维修收费标准表
- 三菱电机空调维修 三菱电机空调维修费用高吗
- 美的燃气灶维修 美的燃气灶维修收费标准明细
- 科龙空调售后服务 科龙空调售后服务网点
- 华帝热水器维修 华帝热水器维修常见故障
- 康泉热水器维修 康泉热水器维修故障
- 华凌冰箱维修电话 华凌冰箱维修点电话
- 海尔维修站 海尔维修站点地址在哪里
- 北京海信空调维修 北京海信空调售后服务
- 科龙空调维修 科龙空调维修故障
- 皇明太阳能售后 皇明太阳能售后维修点
- 海信冰箱售后服务 海信冰箱售后服务热线电话
- 海尔热水器服务热线