[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,退出运行模式,在编辑模式下粘贴回去
效果是这样
空调维修
- 我的世界电脑版运行身份怎么弄出来(我的世界
- 空调抽湿是什么意思,设置抽湿的温度有什么意
- 方太燃气灶有一个打不着火 怎么修复与排查方法
- 夏季免费清洗汽车空调的宣传口号
- 清洗完空调后出现漏水现象
- iphone6能玩什么游戏(iphone6游戏)
- 如何设置电脑密码锁屏(如何设置电脑密码锁屏
- win10删除开机密码提示不符合密码策略要求
- 电脑w7显示不是正版(w7不是正版怎么解决)
- 万家乐z8热水器显示e7解决 怎么修复与排查方法
- 1匹空调多少瓦数(1匹空调多少瓦)
- 安卓手机连接电脑用什么软件好(关于安卓手机
- 电脑网页看视频卡是什么原因(爱拍看视频卡)
- 华帝燃气灶点火器一直响然后熄火怎么办:问题
- 电脑壁纸怎么换(关于电脑壁纸怎么换的介绍)
- 冬天空调的出风口应该朝什么方向(冬天空调风