布娃娃系统应用

本案例是使用animator 控制动画,角色死亡时触发 ragdoll 系统

首先是配置


配置完成后 使用脚本控制animator 动画和 ragdoll 系统的冲突


    /// 
    /// ragdoll 的所有刚体
    /// 
    List ragdollRigidbodys = new List();
    /// 
    /// ragdoll 所有碰撞盒
    /// 
    List ragdollColliders = new List();

    /// 
    /// 使用animator动画时关闭布娃娃系统
    /// 
    public void InitRagdoll()
    {

        Rigidbody[] _rigidbodys = GetComponentsInChildren();

        for (int i = 0; i < _rigidbodys.Length; i++)
        {
            if (_rigidbodys[i] == GetComponent())
                continue;
            ragdollRigidbodys.Add(_rigidbodys[i]);
            _rigidbodys[i].isKinematic = true;

            Collider _collider = _rigidbodys[i].gameObject.GetComponent();
            _collider.isTrigger = true;
            ragdollColliders.Add(_collider);

        }
    }
    /// 
    /// 角色死亡时 开启ragdoll
    /// 
    public void EnableRagdoll()
    {
        for (int i = 0; i < ragdollRigidbodys.Count; i++)
        {
            ragdollRigidbodys[i].isKinematic = false;
            ragdollColliders[i].isTrigger = false;
        }

        Collider collidercontroller = GetComponent().gameObject.GetComponent();
        collidercontroller.enabled = false;
        GetComponent().isKinematic = true;
        animator.enabled = false;
        this.enabled = false;
    }

你可能感兴趣的:(布娃娃系统应用)