unity中Character Controller组件(一个很好用的组件)

在unity中有一个角色控制组件Character Controller组件
它相对于其他组件比价方便(自带碰撞体 重力)
所以在使用的时候可以省略一些步骤 以免出现一些不必要的BUG
省去了刚体 碰撞体
下面我大致介绍一下

1.参数介绍

Slope Limit:坡度限制。该参数用于设置自所控制的游戏对象只能爬上角度小于或等于该参数值的斜坡。
Step Offset:台阶高度。该参数用于设置所控制的游戏对象可以迈上的最高台阶的高度。
Skin Width:皮肤厚度。该参数决定了两个碰撞体可以相互渗入的深度,较大的参数值会产生抖动的现象,较小的参数值会导致所控制的游戏对象被卡住,较为合理的设置是该参数值为Radius值的10%。
Min Move Distance:最小移动距离。如果所控制的游戏对象的移动距离小于该值,则游戏对象将不会移动,这样可避免抖动,大多数情况下该值设为0。
Center:中心。该参数决定了胶囊碰撞体所控制的游戏对象的相对位置,并不影响所控制的游戏对象的中心坐标。
Radius:半径。该参数用于设置胶囊碰撞体的半径。
Height:高度。该参数用于设置胶囊碰撞体的高度。

2.该组件中的Move()h和SimpleMove()方法

在游戏开发中有很多需要游戏主角移动的项目
在前面的博客中介绍过几种移动的方法
在这里再补充一种
SimpleMove 之所以有simple是因为简单
SimpleMove(方向 * 速度)
Move(方向 * 速度*时间段)
这就是这两个函数的用法

 private CharacterController Player;
    private float Speed = 5;
     private void Start()
    {
        Player = GetComponent<CharacterController>();
    }
    private void Update()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Player.SimpleMove(new Vector3(h, 0, v) * Speed);
       //Player.Move(new Vector3(h, 0, v) * Speed * Time.deltaTime);
    }

边这段代码写了上边两个用法

3.自带碰撞函数

private void OnControllerColliderHit(ControllerColliderHit hit)
    {
        if (hit.collider.tag == "Die")
        {
            Destroy(hit.gameObject);
        }
    }

其中hit就是碰撞物体
具体和其他碰撞体函数用法相同

发布了52 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44302602/article/details/99060286