Unity3D 角色控制器 Character Controller

添加组件

Unity3D 角色控制器 Character Controller_第1张图片
Unity3D 角色控制器 Character Controller_第2张图片


角色控制器组件介绍

【Slope Limite】爬坡角度限制(如图限制爬坡角度为10度,超过10度的斜坡无法前进)

【Step Offset】脚步长度限制

【Skin Width】和胶囊体相关,建议不用调0.001

【Min Move Distance】两个物体间的最小距离,到这个距离后,物体就不在前进

【Center】胶囊体的位置(相对物体对象的位置)

【Radius】胶囊体周长

【Height】胶囊体高度

【胶囊体】角色控制器的碰撞模型,用于【Slope Limite】、【Step Offset】、【Min Move Distance】的计算
Unity3D 角色控制器 Character Controller_第3张图片


角色控制器的脚本调用

控制物体移动:

  1. Move(); 不包含重力效果的移动
  2. SimpleMove(); 包含重力效果的移动,推荐使用
    CharacterController组件对象.SimpleMove(方向 * 移动速度 * Time.deltaTime);
    cc.SimpleMove(transform.right * speed * Input.GetAxisRaw("Horizontal") * Time.deltaTime);

世界坐标系: Vector3.方向

本地坐标系: transform.方向(只有:up、forward、right,只有正方向,没有负方向)

public class PlayMove : MonoBehaviour
{
    private CharacterController cc;
    public float speed;
    
    // Start is called before the first frame update
    void Start()
    {
        //获取角色控制器组件对象
        cc = GetComponent();
        
        //初始化速度
        speed = 100f;
    }

    // Update is called once per frame
    void Update()
    {
        //控制物体移动,SimpleMove包含重力效果的移动,前后移动
        cc.SimpleMove(transform.forward * speed * Input.GetAxisRaw("Vertical") * Time.deltaTime);
        
        //控制物体移动,SimpleMove包含重力效果的移动,左右移动
        cc.SimpleMove(transform.right * speed * Input.GetAxisRaw("Horizontal") * Time.deltaTime);
    }
}

你可能感兴趣的:(Unity3D,角色控制器)