gerunido.hatenablog.com
前回からの続き。
使ったバージョンは前回と同じく下記である。

Live2D Cubism 4.1
Cubism 4 SDK for Unity R3
Unity 2019.4.28f1 (64-bit)

CubismModel _model;
CubismParameter _param; // 物理演算の入力パラメータ

float _sec; // パラメータを変化させ始めてからの秒数
float _secMax; // 何秒でパラメータを変化させるか
float _increment; // パラメータを変化させる向き

void Start()
{
_model = this.FindCubismModel();
_param = _model.Parameters.FindById("ParamID");
_sec = 0;
_secMax = 0.2f;
_increment = 1;
}

void LateUpdate()
{
_sec += Time.deltaTime * _increment;
if (_sec > _secMax)
{
_sec = _secMax;
    _increment = -0.1f;
}
else if (_sec < 0)
{
_sec = 0f;
   _increment = 1;
}
float sinValue = Mathf.Sin(Mathf.PI / 2 * _sec / _secMax); // 0 <= sinValue <= 1
_param.Value = _param.MinimumValue + sinValue * (_param.MaximumValue - _param.MinimumValue);
}

こういう感じのプログラムを書くと"ParamID"というIDのパラメータが0.2秒で最大値に変化し、その後2秒で最小値に変化するのを繰り返す。変化は正弦関数で滑らかにしている。
LateUpdate()の中で物理演算の入力パラメータを変化させると物理演算が行われた結果が画面に表示されるようだ。

しかしこれCtrl+Bで実行ファイルをビルドして実行すると物理演算が行われた結果が画面に表示されるのだが、再生ボタンみたいなのを押して行う「シーンの再生」だと全然物理演算が行われた結果が画面に表示されない。LateUpdate()の中でなくてUpdate()で同じ事をやる(上記コードのLateUpdateをUpdateに書き換える)と「シーンの再生」でも物理演算が動くように見えるのだが、今度は実行ファイルの方で全然動かないようになる。Cubism SDKのマニュアルにはLateUpdate()でパラメータ更新すると書いてあるのでLateUpdate()の方が正しいようだ。

ともかく一応はLive2Dの物理演算の結果をUnityで表示できるようになった。「シーンの再生」でも表示させたいものだが。