Пример #1
0
    public AnimatorState ExcuteCmd(AnimatorState aniState, AnimatorState aniLayerState = AnimatorState.Empty)
    {
        AnimatorState preAniState  = m_emAniState;
        AnimatorState realAniState = m_emAniState;

        if (m_emAniState != aniState)
        {
            m_emAniState = aniState;
            IAnimatorStateRule rule = new AnimatorStateRule(aniState, false);
            int nActionGroup        = rule.GetAniGroup();
            if (m_nActionGroup != nActionGroup)
            {
                m_nActionGroup = nActionGroup;
                //现在使用一个模型了,不用进行重新加载模型的。
            }
        }
        if (m_rpm != null)
        {
            AnimatorState blendAniState = AnimatorState.Empty;
            float         fBendTime     = 0.0f;
            AnimatorStateRule.GetBlendRule(m_nRoleID, preAniState, m_emAniState, ref blendAniState, ref fBendTime);
            realAniState = ChangeState(m_emAniState, aniLayerState, blendAniState, fBendTime);
        }
        return(realAniState);
    }
Пример #2
0
    public void CreateSkin(Transform parent, int roleType, string roleName, AnimatorState aniState, bool isPlayer)
    {
        m_emAniState = aniState;
        IAnimatorStateRule rule = new AnimatorStateRule(aniState, false);

        m_nActionGroup = rule.GetAniGroup();
        m_nRoleType    = roleType;
        m_strRoleName  = roleName;
        m_objParent    = parent;
        GameObject go = new GameObject();

        m_tRoot               = go.transform;
        m_tRoot.parent        = parent;
        m_tRoot.localPosition = new Vector3(0, 0, 0);
        m_tRoot.name          = roleName;
        m_tbody               = loadRole(m_tRoot, m_nRoleType, m_nActionGroup).transform;
        if (m_tbody != null)
        {
            if (ProPerty == null)
            {
                ProPerty = U3DUtil.GetComponentInChildren <RolePropertyM>(m_tRoot.gameObject, true);
            }
        }
        ChangeState(aniState);
        SetCampModel(isPlayer);
    }
Пример #3
0
    public AnimatorState ChangeState(AnimatorState state, AnimatorState aniLayerState = AnimatorState.Empty, AnimatorState aniBlendState = AnimatorState.Empty, float fBlendTime = 0.0f)
    {
        bool bChange = false;

        if (m_currentstate == state && m_curLayerState == state && m_fBlendTime <= 0.0f)
        {
            return(m_currentstate);
        }
        if (m_currentstate != state)
        {
            m_currentstate  = state;
            m_fBlendTime    = fBlendTime;
            m_curBlendState = aniBlendState;
            bChange         = true;
        }
        if (m_curLayerState != aniLayerState)
        {
            m_curLayerState = aniLayerState;
            bChange         = true;
        }
        if (m_fBlendTime > 0.0f)
        {
            m_fBlendTime -= Time.deltaTime;
            IAnimatorStateRule rule;
            if (m_curBlendState != AnimatorState.Empty)
            {
                rule = new AnimatorStateRule(m_curBlendState, false);
                SetAnimationValue(rule.GetAnimatorParam(), rule.GetValue());
            }
            if (m_curLayerState != AnimatorState.Empty)
            {
                rule = new AnimatorStateRule(m_curLayerState, true);
                SetAnimationValue(rule.GetAnimatorParam(), rule.GetValue());
            }
            return(m_curBlendState);
        }
        else
        {
            if (bChange || m_curBlendState != AnimatorState.Empty)
            {
                IAnimatorStateRule rule;
                if (m_currentstate != AnimatorState.Empty)
                {
                    rule = new AnimatorStateRule(m_currentstate, false);
                    SetAnimationValue(rule.GetAnimatorParam(), rule.GetValue());
                }
                if (m_curLayerState != AnimatorState.Empty)
                {
                    rule = new AnimatorStateRule(m_curLayerState, true);
                    SetAnimationValue(rule.GetAnimatorParam(), rule.GetValue());
                }
            }
            return(m_currentstate);
        }
    }