CharacterController 角色控制器
鑒于transform.Translate
能夠移動(dòng)且不受前方游戲物體影響,能夠直接穿過(guò)去,Rigibody
移動(dòng)的時(shí)候又會(huì)受到外界力的影響(雖然可以通過(guò)改變其上面的參數(shù)來(lái)限制),這個(gè)時(shí)候就用到了Character Controller
,Character Controller
同時(shí)擁有剛體的重力效果同時(shí)也不會(huì)收到外界力的影響。
Slope Limit
?最大可以行走的坡度Step Offset
?最大能夠行走的臺(tái)階高度Skin Width
?碰撞厚度,更改碰撞檢測(cè)靈敏度,一般不需要更改Min Move Distance
?最小移動(dòng)距離,一般不需要更改Center
?碰撞器的中心點(diǎn)Radius
?碰撞器的外觀Height
?碰撞器的高度
// 移動(dòng)速度
public float speed;
// 旋轉(zhuǎn)速度
public float rotationSpeed;
// 角色控制器
public CharacterController cc;
private void Update() {
? ?// 通過(guò)獲得軸向來(lái)獲得對(duì)應(yīng)的向量
? ?Vector3 dir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
? ?// 角色控制器的移動(dòng)速度
? ?cc.SimpleMove(dir * speed * Time.deltaTime);
? ?// 防止鍵盤(pán)沒(méi)有輸出的時(shí)候模型突然轉(zhuǎn)向到初始方向
? ?if (dir.x != 0 || dir.z != 0) {
? ? ? ?// 通過(guò)四元素改變游戲物體的轉(zhuǎn)向
? ? ? ?transform.rotation = Quaternion.LookRotation(dir);
? ? ? ?// 通過(guò)四元數(shù)的線(xiàn)性插值改變游戲物體的轉(zhuǎn)向,當(dāng)前方向,目標(biāo)方向,旋轉(zhuǎn)速度
? ? ? ?transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(dir), Time.deltaTime * rotationSpeed);
? ?}
}
Quaternion.Lerp
線(xiàn)性插值
不使用線(xiàn)性插值改變游戲物體轉(zhuǎn)向的時(shí)候會(huì)導(dǎo)致場(chǎng)景中的游戲物體突然轉(zhuǎn)向,而使用線(xiàn)性插值改變游戲物體轉(zhuǎn)向的時(shí)候會(huì)有緩動(dòng)效果。
鏈接:https://www.dianjilingqu.com/590924.html