Example #1
0
    /** 找到可用的动作配置 */
    private ModelMotionConfig findUseMotionConfig(int modelID, int id)
    {
        ModelMotionConfig config = ModelMotionConfig.get(modelID, id);

        if (config == null)
        {
            int backID;

            MotionConfig mConfig;

            if ((mConfig = MotionConfig.get(id)) == null)
            {
                return(null);
            }

            if ((backID = mConfig.backID) == id)
            {
                return(null);
            }

            return(findUseMotionConfig(modelID, backID));
        }

        return(config);
    }
Example #2
0
    protected override void toPlayMotion(int id, float speed, float startFrame, bool isLoop)
    {
        string useName = MotionConfig.get(id).useName;

        if (_animator != null)
        {
            _animator.speed = speed;

            try
            {
                _animator.CrossFade(useName, 0f, 0, 0f);
            }
            catch (Exception e)
            {
                Ctrl.errorLog(e, "播放动画失败", useName, _unit.avatar.getModelID());
            }
        }
        else if (_animation != null)
        {
            _animation.wrapMode = isLoop ? WrapMode.Loop : WrapMode.Once;

            try
            {
                _animation.CrossFade(useName);
                _animationState       = _animation[useName];
                _animationState.speed = speed;
            }
            catch (Exception e)
            {
                Ctrl.errorLog(e, "播放动画失败", useName, _unit.avatar.getModelID());
            }
        }
    }
Example #3
0
    private void prePlayMotion(int id, float speed, float startTime, bool isLoop)
    {
        int modelID;

        if ((modelID = _data.avatar != null ? _data.avatar.modelID : -1) <= 0)
        {
            return;
        }

        _currentMotionID = id;

        ModelMotionConfig config = findUseMotionConfig(modelID, id);

        if (config != null)
        {
            id = config.id;
            _currentMotionMaxTime = config.motionTime;
        }
        else
        {
            _currentMotionMaxTime = MotionConfig.get(id).defaultMotionTime;
        }

        _currentMotionUseID    = id;
        _currentMotionSpeed    = speed;
        _currentMotionPassTime = startTime;
        _currentIsLoop         = isLoop;

        toPlayMotion(id, speed, startTime, isLoop);
    }