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