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); }
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); }
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); } }