【Unity】使用Cinemachine+CharacterController實現第三人稱視角下的角色視角、移動和跳躍控制

1.初始配置

  • 安裝Cinemachine插件
  • 給角色添加CharacterConroller
  • 創建Cinemachine-->Free Look Camera
  • 在Free Look Camera中調整參數,Y Axis勾選Inver,X Axis取消勾選Inver
  • Free Look Camera要看向角色 + 跟隨角色(自行設置,我就不再贅述了)

2.編寫C#腳本

代碼可以自行收藏直接用,關鍵自行調整的參數是:

speed、rotateSpeed、jumpHeight

using UnityEngine;public class PlayerController : MonoBehaviour
{[Header("參數")] public float speed; //角色移動速度(跑步的時候是兩倍)public float rotateSpeed; //角色轉向速度public float playerGravity = 9.8F; //角色重力public float jumpForce; //跳躍力度public float jumpHeight = 2F; //跳躍高度public float verticalVelocity = 0;//垂直速度[Header("狀態")] public bool isMove; //是否在移動public bool isRun; //是否在跑步[Header("輸入")]public Vector3 inputDirection; //wasd輸入(x值表示horizontal,z值表示vertical,y值為0)[Header("組件")]public CharacterController characterController; //這個在Start函數中初始化,你也可以在Inspector初始化private void Start(){inputDirection = new Vector3();characterController = GetComponent<CharacterController>();}private void Update(){//計算WASD輸入inputDirection.x = Input.GetAxisRaw("Horizontal");inputDirection.z = Input.GetAxisRaw("Vertical");//獲得是否是移動和跑步狀態isMove = inputDirection.magnitude > 0;isRun = isMove && Input.GetKey(KeyCode.LeftShift);//光標的可見性設置if (Input.GetKeyDown(KeyCode.I)){Cursor.visible = !Cursor.visible;}if (Input.GetKeyDown(KeyCode.Space)){characterController.SimpleMove(transform.up * jumpForce);}if (!isMove) return;//實現角色轉向到相機平行于xz軸構成的平面的朝向Vector3 targetDirection = new Vector3(inputDirection.x, 0, inputDirection.z);float y = Camera.main.transform.rotation.eulerAngles.y;Quaternion targetRotation = Quaternion.Euler(0, y, 0) * Quaternion.LookRotation(targetDirection);// 使用Quaternion.Slerp進行平滑轉向transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * rotateSpeed);}private void FixedUpdate(){Vector3 moveDirection = Vector3.zero;moveDirection += transform.forward * inputDirection.z;moveDirection += transform.right * inputDirection.x;moveDirection *= Time.fixedDeltaTime * (isRun ? speed*2 : speed);// 重力if (!characterController.isGrounded)verticalVelocity -= playerGravity * Time.fixedDeltaTime;// a*t=velseverticalVelocity = 0.0F;// 跳躍if (Input.GetButton("Jump")){// 得在地面才能跳if (characterController.isGrounded){verticalVelocity = Mathf.Sqrt(jumpHeight * 2 / playerGravity) * playerGravity;// 初始向上速度}}moveDirection.y += verticalVelocity * Time.fixedDeltaTime;// v*t=s// 移動characterController.Move(moveDirection);}
}

3.測試效果

測試運行效果,看看是否正常

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902374.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902374.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902374.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解 DML 和 DQL:SQL 數據操作與查詢全解析

深入理解 DML 和 DQL&#xff1a;SQL 數據操作與查詢全解析 在數據庫管理中&#xff0c;SQL&#xff08;結構化查詢語言&#xff09;是操作和查詢數據的核心工具。其中&#xff0c;DML&#xff08;Data Manipulation Language&#xff0c;數據操作語言&#xff09; 和 DQL&…

MongoDB數據庫的安裝到入門使用詳細講解

本篇文章主要講解MongoDB的安裝使用教程及基礎的數據庫管理和操作能力的講解,通過本篇文章您可以快速的掌握對MongDB數據庫的基本認識及,基礎開發能力。 一、MongoDB介紹 MongoDB是一款免費開源的非關系型數據庫,該數據庫適應于復雜關系的存儲和管理,非常適合數據結構復雜…

git提交實現文件或目錄忽略

前言 開發中使用git下載項目代碼開發,存在不需要提交文件或目錄&#xff0c;這里記錄下ideajava項目開發添加以下配置可忽略不需要提交文件,以方便我們提交代碼時&#xff0c;查看及提交文件只涉及項目代碼修改文件。 git提交實現文件或目錄忽略 .gitignore 文件的內容列出了在…

go語言的八股文

1.go語言觸發異常的場景有哪些 運行時錯誤 1.空指針解引用&#xff1a;嘗試訪問一個未初始化的指針指向的內存&#xff0c;會導致程序崩潰并觸發異常。 2.數組越界訪問&#xff1a;試圖訪問數組中不存在的索引&#xff0c;比如數組長度為5&#xff0c;卻嘗試訪問索引為10的元素…

Ubuntu安裝MySQL步驟及注意事項

一、安裝前準備 1. 系統更新&#xff1a;在安裝 MySQL 之前&#xff0c;確保你的 Ubuntu 系統軟件包是最新的&#xff0c;這能避免因軟件包版本問題導致的安裝錯誤&#xff0c;并獲取最新的安全補丁。打開終端&#xff0c;執行以下兩條命令&#xff1a; sudo apt update sudo …

【愚公系列】《Python網絡爬蟲從入門到精通》054-Scrapy 文件下載

&#x1f31f;【技術大咖愚公搬代碼&#xff1a;全棧專家的成長之路&#xff0c;你關注的寶藏博主在這里&#xff01;】&#x1f31f; &#x1f4e3;開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主&#xff01; &#x1f…

2025最新︱中國信通院靜態應用程序安全測試(SAST)工具能力評估,懸鏡安全靈脈AI通過評估!

背景 研發運營安全&#xff08;DevSecOps&#xff09;從研發運營&#xff08;DevOps&#xff09;的概念延伸和演變而來&#xff0c;其核心理念是將安全貫穿從開發到運營的軟件開發生命周期的每一個環節&#xff0c;在每個階段自動實施安全措施&#xff0c;從而實現快速開發交付…

辛格迪客戶案例 | 浙江高跖醫藥委托生產質量管理協同(OWL MAH)項目

一、案例概述 浙江高跖醫藥科技股份有限公司是一家集“研、產、銷”為一體的專業化藥品持證企業。高跖醫藥自成立之初就建立并運行著一套相對完善的質量管理體系&#xff0c;涵蓋了藥品的研發、生產監管及銷售。高跖醫藥于2022年選擇實施了辛格迪的“委托生產質量管理協同解決…

【NLP 65、實踐 ? 基于Agent優化文章】

羈絆由我而起&#xff0c;痛苦也由我承擔 —— 25.4.18 一、?【核心函數】定義大模型調用函數 call_large_model prompt&#xff1a;用戶傳入的提示詞&#xff08;如 “請分析這篇作文的主題”&#xff09;&#xff0c;指導模型執行任務 client&#xff1a;Zhipu…

【鋰電池SOH估計】BP神經網絡鋰電池健康狀態估計,鋰電池SOH估計(Matlab完整源碼和數據)

目錄 效果一覽程序獲取程序內容研究內容基于BP神經網絡的鋰電池健康狀態估計研究摘要關鍵詞1. 引言1.1 研究背景1.2 研究意義1.3 研究目標2. 文獻綜述2.1 鋰電池SOH估計理論基礎2.2 傳統SOH估計方法2.3 基于BP神經網絡的SOH估計研究進展2.4 研究空白與創新點3. BP神經網絡原理3…

2025第十六屆藍橋杯python B組滿分題解(詳細)

目錄 前言 A: 攻擊次數 解題思路&#xff1a; 代碼&#xff1a; B: 最長字符串 解題思路&#xff1a; 代碼&#xff1a; C: LQ圖形 解題思路&#xff1a; 代碼&#xff1a; D: 最多次數 解題思路&#xff1a; 代碼&#xff1a; E: A * B Problem 解題思路&…

第十二節:原理深挖-React Fiber架構核心思想

鏈表結構、時間切片&#xff08;Time Slicing&#xff09; 優先級調度實現&#xff08;如用戶輸入>網絡請求&#xff09; React Fiber架構深度解析&#xff1a;從鏈表到優先級調度的革命性升級 一、Fiber架構核心設計思想 React Fiber是React 16的底層協調算法重構&#x…

你學會了些什么211201?--http基礎知識

概念 HTTP–Hyper Text Transfer Protocol&#xff0c;超文本傳輸協議&#xff1b;是一種建立在TCP上的無狀態連接&#xff08;短連接&#xff09;。 整個基本的工作流程是&#xff1a;客戶端發送一個HTTP請求&#xff08;Request &#xff09;&#xff0c;這個請求說明了客戶端…

MCU開發學習記錄8 - 基本定時器學習與實踐(HAL庫) - 定時器DMA循環模式修改ARR值、定時器中斷方式修改ARR值 - STM32CubeMX

名詞解釋&#xff1a; TRGO&#xff1a;Trigger Out General Purpose Output ARR&#xff1a;Auto-reload PSC&#xff1a;Prescaler CNT&#xff1a;Counter EGR&#xff1a;event generation register 本文將介紹基本定時器的概念、相關函數以及STM32CubeMX生成定時器的配置…

考研系列-計算機網絡沖刺考點匯總(上)

寫在前面 本文將總結王道408考研課程的計算機網絡沖刺考點的第一章到第三章內容&#xff08;計算機網絡體系結構、物理層、數據鏈路層&#xff09;。【圖片較多&#xff0c;加載需要時間&#xff0c;可以提前打開加載~~】 第一章、計算機網絡體系結構 注意&#xff1a;PCI(頭部…

設計模式每日硬核訓練 Day 14:組合模式(Composite Pattern)完整講解與實戰應用

&#x1f504; 回顧 Day 13&#xff1a;橋接模式小結 在 Day 13 中&#xff0c;我們學習了橋接模式&#xff08;Bridge Pattern&#xff09;&#xff1a; 用于將“抽象”與“實現”分離&#xff0c;適用于雙維度變化場景&#xff08;如圖形類型 渲染方式&#xff09;。它強調…

訊聯桌面TV版apk下載-訊聯桌面安卓電視版免費下載安裝教程

在智能電視的使用過程中&#xff0c;一款好用的桌面應用能極大提升我們的使用體驗。訊聯桌面 TV 版就是這樣一款備受關注的應用&#xff0c;它可以讓安卓電視擁有更個性化、便捷的操作界面。今天&#xff0c;就為大家詳細介紹訊聯桌面 TV 版 apk 的免費下載安裝教程。 一、下載…

Nginx知識點

Nginx發展歷史 Nginx 是由俄羅斯程序員 Igor Sysoev 開發的高性能開源 Web 服務器、反向代理服務器和負載均衡器 &#xff0c;其歷史如下&#xff1a; 起源與早期開發&#xff08;2002 - 2004 年&#xff09; 2002 年&#xff0c;當時 Igor Sysoev 在為俄羅斯門戶網站 Rambl…

uview1.0 tabs組件放到u-popup中在微信小程序中滑塊樣式錯亂

解決思路 重新計算布局信息&#xff1a;在彈窗顯示后重新調用 init 方法來計算組件的布局信息。使用 nextTick&#xff1a;保證在視圖更新之后再進行布局信息的計算。 <u-tabs ref"tabsRef" ></u-tabs> makeClick(){this.makeShowtruethis.$nextTick…

騰訊一面-軟件開發實習-PC客戶端開發方向

1.自我介紹就不多贅述了 2. 請介紹一下你的項目經歷 - 介紹了專輯鑒賞項目&#xff0c;前端使用html語言編寫&#xff0c;后端基于http協議使用C語言進行網頁開發。此外&#xff0c;還提及項目中涉及處理多線程問題以及做過內存池管理項目。 3. 項目中HTTP協議是使用庫實現的…