Animatorでアニメーションさせている間、LateUpdate関数外で値を更新したときに前の値に戻ってしまいます。LateUpdate関数内で値を更新すれば問題ないと思いますが、LateUpdate外で解決する方法はありますでしょうか?
CubismParameterStoreの方で、AnimationClipの再生前後で前の値を保持してRestoreする処理が実行されるため以下のように、特定のパラメータだけその処理の対象外になるようにしたのですが、値が戻ってしまいます。
/// SaveParameters内
// save parameters value
if(_parameterValues != null)
{
for(var i = 0; i < _parameterValues.Length; ++i)
{
if (excludeParams.ContainsKey(DestinationParameters[i].Id)) continue;
_parameterValues[i] = DestinationParameters[i].Value;
}
}
// RestoreParameters内
// restore parameters value
if(_parameterValues != null)
{
for(var i = 0; i < _parameterValues.Length; ++i)
{
if (excludeParams.ContainsKey(DestinationParameters[i].Id)) continue;
DestinationParameters[i].Value = _parameterValues[i];
}
}
※ パラメータの値のみ変更するので、パーツの不透明度を調整するコードは書いていない.
実行している内容:
// Toggleの値更新時のイベント追加
Tgl.onValueChanged.AddListener((v) => {
if ( v ) {
// CubismParameter更新
this.tglOn.Value = 0.0f;
} else {
// CubismParameter更新
this.tglOn.Value = 1.0f;
}
_model.ForceUpdateNow();
// paramStore.Refresh();
});
当然かも知れませんが、Animatorコンポーネントを非アクティブ状態で試した場合は動作しました。
この方法では実現できなかったため、別の方法を模索中ですが今のところ解決できなかったため質問させていただきました。
参考URL: