在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實例-功能-下蹲】角色下蹲(三)動畫配置》中,實現完整的動畫效果)