角色控制器

public class L49 : MonoBehaviour
{
    CharacterController cc;
    Animator ani;
    // Start is called before the first frame update
    void Start()
    {
        ani = GetComponent<Animator>();
        //角色控制器让角色可以受制于碰撞,但是不会被刚体所牵制
        //添加角色控制器后,不用再添加刚体就可以检测碰撞器,触发器和射线
        //使用角色控制器时不建议使用动画自带的位移(即不要勾选Animator中的Apply Root Motion)

        //相关参数
        //Slope Limit 大于该值的斜坡上不去
        //Step Offset 单位为米,低于该值的台阶才能上去,该值不能大于角色控制器的高度
        //Skin Width 两个碰撞体可以穿透彼此最大的长度

        //代码控制
        cc= GetComponent<CharacterController>();

        if (cc.isGrounded)
        {
            //是否接触地面
        }
        //受重力作用的移动
        //cc.SimpleMove(Vector3.forward * Time.deltaTime * 10);
        //不受重力作用的移动
        //cc.Move(Vector3.forward * Time.deltaTime * 10);

    }
    private void Update()
    {
        ani.SetInteger("Speed", (int)Input.GetAxisRaw("Vertical"));
        cc.SimpleMove(transform.forward * Time.deltaTime * 10* Input.GetAxisRaw("Vertical"));
    }
    private void OnControllerColliderHit(ControllerColliderHit hit)
    {
        //特殊生命周期函数检测是否与别的碰撞器碰撞
    }
    //private void OnCollisionEnter(Collision collision)
    //{
    //    //因为有了专门的检测函数,所以在自己身上的碰撞器函数没用
    //}
    private void OnTriggerEnter(Collider other)
    {
        //触发器
    }
}
posted @ 2025-04-09 16:41  cannedmint  阅读(20)  评论(0)    收藏  举报