Unity 角色控制器 Charactor Controller


Charactor Controller(角色控制器)

“ 角色控制器允許你在受制於碰撞的情況下很容易的進行運動,而不用處理剛體。

 角色控制器不受力的影響,僅僅當你調用 Move 函數時才運動。

 然后它將執行運動,但是受制於碰撞。"

                                              --- From Unity3d 官方文檔

我們通常在人物模型上加上這個組件后,就可以控制模型的移動了

要注意的一點是:加了角色控制器后,他就不受重力影響

所以要自己在move函數中處理重力的情況

即我們要自己出來y軸方向上的速度變化

Charactor Controller 組件參數

Slope Limit 爬坡限制:小於等於此角度可以上坡

Step Offset 台階高度

Skin Width 皮膚寬度:太大就抖動,太小就卡住,最好設置成 Radius 半徑的10%

Min Move Distance 最小移動距離:0,太多不行,太小動不了

Center:中心點坐標

Radius:半徑,一般0.5

Height:高,一般2.0

Charactor Controller 測試

 1 using UnityEngine;
 2 
 3 public class CharactorControllerTest : MonoBehaviour
 4 {
 5     public float speed = 6.0F;
 6     public float jumpSpeed = 8.0F;
 7     public float gravity = 20.0F;
 8     private Vector3 moveDirection = Vector3.zero;
 9 
10     void Update()
11     {
12         CharacterController controller = GetComponent<CharacterController>();
13         if (controller.isGrounded)
14         {
15             moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
16             moveDirection = transform.TransformDirection(moveDirection);
17             moveDirection *= speed;
18             if (Input.GetKeyDown(KeyCode.Space))
19                 moveDirection.y = jumpSpeed;
20         }
21         moveDirection.y -= gravity * Time.deltaTime;
22         controller.Move(moveDirection * Time.deltaTime);
23     }
24 }

運行效果:

 

 

 

*** |  以上內容僅為學習參考、學習筆記使用  | ***


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM