protected AnimationOdds generateAnimation() { float rand = MathUtility.randomFloat(0.01f, 1.0f); int count = mAnimationList.Count; float curMin = 0.0f; AnimationOdds animation = null; for (int i = 0; i < count; ++i) { if (rand > curMin && rand <= curMin + mAnimationList[i].mOdds) { animation = mAnimationList[i]; break; } curMin += mAnimationList[i].mOdds; } return(animation); }
public override void enter(StateParam param) { mCharacterManager.activeCharacter(mPlayer, true); RoleDisplay scene = mSceneSystem.getScene <RoleDisplay>(GameDefine.ROLE_DISPLAY); ObjectTools.MOVE_OBJECT_EX(mPlayer, scene.mRolePosition1, scene.mRolePosition0, 1.0f, onMoveDone); mPlayer.resetRotation(); // 设置静止状态拖尾,播放骑行动作 mPlayer.activeTrail(true); AnimationOdds anim = generateAnimation(); mAnimation.Play(anim.mAnimName); mAnimation[anim.mAnimName].speed = 1.5f; mAnimation.PlayQueued(anim.mNextAnim); mAnimation[anim.mNextAnim + GameDefine.QUEUE_SUFFIX].speed = 1.5f; mPlayer.getSelectAnimation().Clear(); mPlayer.getSelectAnimation().Add(anim.mAnimName); mPlayer.getSelectAnimation().Add(anim.mNextAnim); }