【Unity3D实例-功能-拔枪】角色拔枪(三)IK的使用-紧握武器

这篇文章是"角色拔枪"功能的末篇文章,我将向大家展示如何利用 Unity 强大的逆向运动学------IK技术,开发一个角色拔枪并紧握武器的功能案例。本文将详细介绍从动画配置到 IK 应用的全过程,以及如何通过IK技术,让角色的双手紧紧握住武器。如果大家还不清楚拔枪功能和分割上下身的功能可以参考我前两篇文章:

(1)首篇文章:如何实现动态创建武器和角色拔枪的动画,大家可以参考《【Unity3D实例-功能-拔枪】角色拔枪(一)动态创建武器》。

(2)次篇文章:如何分离角色的"上身动画"和"下身动画",使得上半身进行特定动作(诸如:拔枪、射击、换弹)时,下半身仍能持续执行移动动画的技巧,大家可以参考《【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身》。

目录:

1.安装Animation Rigging

2.为角色安装骨络

3.准备实现IK前的工作

4.编写IK的关键代码

5.完整的拔枪代码

6.测试和运行


一.安装Animation Rigging

点击 Unity 的"Package Manger"下拉框,选择"Unity Registry",然后在搜索框中输入"Animation Rigging",再点击"Install"按钮进行安装即可。

二.为角色安装骨络

选中角色,点击菜单栏中的"Animation Rigging",然后点击"Rig Setup"和"Bone Renderer Setup",为角色添加骨络。

三.准备实现IK前的工作

1.点击角色左手和右手的骨络,在右侧栏中可以看到骨络的定位,然后我们在角色的左手和右手的骨络下,分别创建一个空物体(我这里分别命名为"LeftHandPosition"和"RightHandPosition")。

2.接着把角色左手和右手下的空物体,在场景中分别拖拉到角色对应的左手和右手下。

3.点击动画控制器,选中"Layers"页签,选择上身的动画图层(如果不清楚该动画怎么来的小伙伴,可以去查看我上一篇文章《【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身》),点击图层右上角的"小齿轮",在弹出的窗口中,勾选上"IK Pass"。

四.编写IK的关键代码

1.IK的关键代码

代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。

原创来源于-谷宇博客:https://www.biguyu.top/home

2.编写完IK代码后,把角色左右手下的空物体和武器的预制体赋予给变量(记得把脚本挂载到角色上)。

3.接着大家可以在运行状态下,拖拉角色左右手下的空物体,调整角色的手部来紧紧握住武器。

五.完整的拔枪代码

1.在 "Assets" 文件夹中新建一个名为 "Scripts" 的文件夹(可以根据自己的喜好来命名),然后在该文件夹里创建一个 C# 脚本文件。并将它拖拉到角色上。

2.完整的拔枪代码

代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。

原创来源于-谷宇博客:https://www.biguyu.top/home

六.测试与运行

亲测过程:进入"Play Mode"。按下拔枪键,触发拔枪动画后。这时观察角色的手部位置可以紧紧贴着武器,角色移动时,手部也可以跟随武器和身形进行摆动。

相关推荐
wujian83112 小时前
怎么用千问生成word文档:从「格式崩」到「一键过」,AI导出鸭打通最后半厘米
人工智能·ai·c#·word·豆包·deepseek·ai导出鸭
zlinear数据采集卡3 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
唐青枫4 小时前
别把 ImmutableArray 当成只读 List:C#.NET 不可变数组深入详解
c#·.net
_ZHOURUI_H_6 小时前
Unity TCP底层极限拆解:粘包、半包、CRC、序列号、双缓冲到底怎么一起工作的?
网络·网络协议·tcp/ip·游戏·unity·游戏引擎·游戏开发
言乐66 小时前
Python游戏水平测试辅助系统2
开发语言·windows·python·游戏·django
zlinear数据采集卡7 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
KindSuper_liu10 小时前
Unity 游戏网络基础:从 TCP、UDP 到 HTTP、TLS 与 Best HTTP
网络·游戏·unity
花落人散处10 小时前
CDiskClean 开发历程 —— 文件清理_目录树解析实现方案参考
c#
离陌在学C#10 小时前
C# 泛型:从基础到高级应用
开发语言·c#