【Unity3D实例-功能-下蹲】角色下蹲(二)穿越隧道
在3D 游戏关卡里,低矮隧道往往是设计者的“隐形空气墙”——角色稍不留神就会穿模卡死。本文演示如何基于 CharacterController 实现“一键下蹲 + 实时碰撞检测”,让角色贴地滑入隧道、起身无缝恢复,彻底告别穿模烦恼!
为了避免篇幅冗长,关于下蹲功能将会拆分成三篇文章进行连载,手把手详细带您一起实现一个完整的下蹲功能。首篇文章分享下蹲功能的实现方式。次篇文章,我将会解决下蹲后,角色穿越山洞或者隧道时,不会出现穿模的现象。末篇文章,我将会细讲动画配置,从蹲下、蹲着、蹲着行走,一直到站起来的动画组合实现,让角色灵活起来。
目录:
1.下蹲功能功能
2.搭建隧道
3.编写下蹲检测代码
4.测试与运行
--------------------
一.下蹲功能功能
在首篇文章《【Unity3D实例-功能-下蹲】角色下蹲(一)功能实现》,介绍了如何实现角色的下蹲功能。如果有不懂的小伙伴可以去查看我的博客文章。
原创链接:https://biguyu.top/article/detail?code=1952754434354319360
二.搭建隧道
1.点击鼠标右键,选择“Create Empty”,创建一个空物体(我这里命名为“Cave”)。
2.然后在空物体下,点击鼠标右键,选择“3D Object” -> 点击“Cube”,分别创建一个Cube作为顶部,两个Cube作为左右墙。
3.选中隧道的父节点(就是刚创建的“空物体”),在“Inspector”菜单下,点击“Layer”,为隧道创建一个障碍物的Layer(我这里也是命名为“Cave”),用于后续的实时碰撞检测。
三.编写下蹲功能代码
1.在Assets 目录中新建专用 的Scripts 文件夹(命名可自定义规范),并于其内创建对应功能 C# 脚本;完成后,将该脚本以组件形式拖放至场景角色实例,完成依赖注入与初始化。
2.实现下蹲 + 实时碰撞检测的代码
代码、模型和动画都已经上传到我的个人博客了,大家可以自行下载。
原创来源于-谷宇博客:https://www.biguyu.top/home
四.测试与运行
亲测过程:进入 Play Mode 后,持续按压空格键,角色中心高度由 1.6 m 降至 1 m,CharacterController 的碰撞盒同步收缩;大家可以看到动态图片中,角色进入隧道后,松开空格键,角色控制器的框框被隧道顶盖阻挡无法直立,直至退出隧道后方可恢复站立,验证实时高度检测与层掩码过滤成功防止穿模。(在文章《【Unity3D实例-功能-下蹲】角色下蹲(三)动画配置》中,实现完整的动画效果)