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角色控制器组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管理软件开发的最高境界,那就是“无代码开
- 下一篇: Java中Character类的概述及其