示例#1
0
    private void UpdateOneShotAnim()
    {
        var animClip = animation[PlayerAnimName[(int)_currentOnShotAnim]];

        switch (_oneShotState)
        {
        case OneShotState.BlendIn:
        {
            var sum = 0.0f;
            _oneShotElapsedTime += Time.deltaTime;

            var px = Mathf.Clamp(_oneShotElapsedTime / _oneShotBlendInTime, 0, 1);

            // Fade out all other animations
            for (var i = 0; i < (int)PlayerAnim.Count; i++)
            {
                if ((int)_currentOnShotAnim == i)
                {
                    continue;
                }

                var anim = animation[PlayerAnimName[i]];

                anim.weight = (1.0f - px) * _recordedBlendWeights[i];

                sum += anim.weight;
            }

            Util.Assert(sum >= 0 && sum <= 1.0f);

            animClip.weight = 1.0f - sum;

            if (px >= 1)
            {
                animClip.speed      = 1.0f;
                _oneShotState       = OneShotState.Playing;
                _oneShotElapsedTime = 0;
            }
            break;
        }

        case OneShotState.Playing:
        {
            _oneShotElapsedTime += Time.deltaTime;

            if (_oneShotElapsedTime > animClip.length)
            {
                _oneShotState = OneShotState.None;
            }

            break;
        }

        default:
        {
            Util.Assert(false);
            break;
        }
        }
    }
示例#2
0
    private void PlayOneShot(PlayerAnim oneShotAnim)
    {
        if (_oneShotState != OneShotState.None)
        {
            return;
        }

        _oneShotState      = OneShotState.BlendIn;
        _currentOnShotAnim = oneShotAnim;

        var animClip = animation[PlayerAnimName[(int)oneShotAnim]];

        animClip.normalizedTime = 0;
        animClip.speed          = 0;

        RecordBlendWeights();
    }
示例#3
0
    private void UpdateOneShotAnim()
    {
        var animClip = animation[PlayerAnimName[(int) _currentOnShotAnim]];

        switch (_oneShotState)
        {
            case OneShotState.BlendIn:
            {
                var sum = 0.0f;
                _oneShotElapsedTime += Time.deltaTime;

                var px = Mathf.Clamp(_oneShotElapsedTime / _oneShotBlendInTime, 0, 1);

                // Fade out all other animations
                for (var i = 0; i < (int)PlayerAnim.Count; i++)
                {
                    if ((int)_currentOnShotAnim == i)
                        continue;

                    var anim = animation[PlayerAnimName[i]];

                    anim.weight = (1.0f - px) * _recordedBlendWeights[i];

                    sum += anim.weight;
                }

                Util.Assert(sum >= 0 && sum <= 1.0f);

                animClip.weight = 1.0f - sum;

                if (px >= 1)
                {
                    animClip.speed = 1.0f;
                    _oneShotState = OneShotState.Playing;
                    _oneShotElapsedTime = 0;
                }
                break;
            }
            case OneShotState.Playing:
            {
                _oneShotElapsedTime += Time.deltaTime;

                if (_oneShotElapsedTime > animClip.length)
                {
                    _oneShotState = OneShotState.None;
                }

                break;
            }
            default:
            {
                Util.Assert(false);
                break;
            }
        }
    }
示例#4
0
    private void PlayOneShot(PlayerAnim oneShotAnim)
    {
        if (_oneShotState != OneShotState.None)
        {
            return;
        }

        _oneShotState = OneShotState.BlendIn;
        _currentOnShotAnim = oneShotAnim;

        var animClip = animation[PlayerAnimName[(int)oneShotAnim]];

        animClip.normalizedTime = 0;
        animClip.speed = 0;

        RecordBlendWeights();
    }