Live2Dアプリ作ってると軽くハマるポイントなので書いておこうかと。
自分だけかと思ったら、同じようにハマってる人がいました。
Live2Dフォーラム - Unityでのモーション再生がうまくいきません
Unityに限らず、どのプラットフォームでも共通かと思います。
開発環境
・Live2D Unity SDK 2.1.00_1
・Unity5.3.1
2つのAPIの違い
Live2Dドキュメント-パラメータの操作やサンプルソースを見ると、パラメーター操作にはsetParamFloat、addToParamFloat、multParamFloatがあります。
このsetParamFloatとaddToParamFloatの違いですが、値を上書きするか加算するかの違いがあります。
// 上書き
live2DModel.setParamFloat("パラメーターID", 値);
// 加算
live2DModel.addToParamFloat("パラメーターID", 値);
SDKサンプルのDemoプロジェクトを見ると、setParamFloatが使われています。
(Demoプロジェクトはマウスドラッグした方に顔を向けるサンプル)
<Demo - setParamFloat()>
では、これをaddToParamFloatに変えてみます。
<Demo - addToParamFloat()>
加算されるので、マウスドラッグし続けるとぐいっと顔を向けて不自然ですね。
「うん、これじゃない。addToParamFloatは使う必要ないな」と思った時期がありました。
はまりポイント
実はaddToParamFloatは、モーション再生とマウスドラッグ処理を併用する際に有効です。
僕もsetParamFloatで値を上書きしてモーションが正しく再生されないって時がありました。
・setParamFloatの場合、モーションで動かすパラメーターも上書きされて正しく再生されない
・addToParamFloatの場合、加算なのでモーションで動かすパラメーターを上書きしない
setParamFloatで上手くいかない場合はaddToParamFloatを使ってみて下さい。