日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Character Controller角色控制器组件

發布時間:2023/12/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Character Controller角色控制器组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

角色控制器組件簡介
①.游戲物體的“引擎”
在游戲開發過程中,最關鍵的是游戲的主角,也就是我們玩家所操控的虛擬角色,
角色在游戲中必須“會動”,角色可以走,跑,跳,飛等等。
在 Unity 中可以讓角色“動起來”的常用組件有三個:Transform,Rigidbody,
這兩個我相信大家已經使用大量的使用過了。
另外還有一個組件叫做:Character Controller,角色控制器。

②.Character Controller
角色控制器也屬于物理組件,它的位置在:
Component-->Physics-->Character Controller

③.角色控制器的主要用途
角色控制器主要用于第三人稱或者第一人稱游戲主角(人形為主)控制。

使用角色控制器組件控制角色簡單移動

環境準備:

①創建一個Plane地面并賦予材質
②創建一個 Capsule 游戲物體命名為Player;
③給該游戲物體附加 Character Controller 組件【見圖】

?控制角色移動
SimpleMove(Vector3):簡單移動
以一定的速度移動角色,會自動應用重力。
[角色控制器不是剛體,但是具備剛體的一些屬性]

Move(Vector3):移動
更為復雜的一種運動,每次都絕對運動,不會應用重力。

測試準備:

創建一個新的腳本命名為Player,然后拖拽掛在到Player游戲物體身上【見圖】

SimpleMove方法移動代碼:

?

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Player : MonoBehaviour {private CharacterController characterController;private void Start(){characterController = gameObject.GetComponent<CharacterController>();//獲取自身的角色控制器組件.}private void Update(){float horizontal = Input.GetAxis("Horizontal");//獲取橫向X軸.float vertical = Input.GetAxis("Vertical");//獲取縱向Z軸.characterController.SimpleMove(new Vector3(horizontal,0,vertical)*2f);} }

效果:

?Move方法移動代碼:

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Player : MonoBehaviour {private CharacterController characterController;private void Start(){characterController = gameObject.GetComponent<CharacterController>();//獲取自身的角色控制器組件.}private void Update(){float horizontal = Input.GetAxis("Horizontal");//獲取橫向X軸.float vertical = Input.GetAxis("Vertical");//獲取縱向Z軸.characterController.Move(new Vector3(horizontal,0,vertical)*0.2f);} }

效果:

?角色控制器屬性講解
①Slope Limit
斜率限制,控制角色最大的爬坡斜度。[演示:角色爬坡]


②Step Offset
臺階高度,控制角色可以邁上最大的臺階高度,在unity中一個Cube的高度是一米,新建一個Cube制作一個簡單的臺階

[演示:角色上臺階]

③Skin Width [默認即可]
皮膚厚度,在角色的外圍包裹著一層“皮膚”,設置這層皮膚的厚度。
數值調大,最明顯的就是角色和地面之間的間距變大,也就是角色皮膚變厚了。


④Min Move Distance [默認即可]
最小移動距離,默認是 0.001,也就是 1 毫米。
如果該數值調大,但代碼中單位移動速度很慢,角色就不會動。


⑤Center/Radius/Height
角色控制器組件在 Scene 面板中體現為一個“膠囊碰撞器”的形狀。
Center:控制中心點的位置;
Radius:控制半徑;
Height:控制高度。


小技巧:在 Game 面板將 Gizmos 設置為選中狀態,可以在運行狀態看到組
件的圖標,方便運行過程中對組件進行調試。


一個游戲物體附加了角色控制器組件后,
和角色控制器組件共存的其他的碰撞器組件是處于“無效”狀態。
和場景中其他物體的交互碰撞,是以角色控制器組件的邊緣進行判斷的。

OnControllerColliderHit(ControllerColliderHit hit)函數可以通過 hit 獲取到角色碰撞器碰撞到的物體的信息【代碼演示】。

using System.Collections; using System.Collections.Generic; using UnityEngine;public class Player : MonoBehaviour {private CharacterController characterController;private void Start(){characterController = gameObject.GetComponent<CharacterController>();//獲取自身的角色控制器組件.}private void Update(){float horizontal = Input.GetAxis("Horizontal");//獲取橫向X軸.float vertical = Input.GetAxis("Vertical");//獲取縱向Z軸.characterController.SimpleMove(new Vector3(horizontal,0,vertical)*2f);}private void OnControllerColliderHit(ControllerColliderHit hit){Debug.Log(hit.gameObject.name);} }

測試結果:

此文章只是為了記錄一下學習筆記,如有不足還望多多指點!?

?

總結

以上是生活随笔為你收集整理的Character Controller角色控制器组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。