Syu
1
タイトル長すぎてすみません。
SDKのバージョンは最新のCubismSdkForUnity-4-r.5
Unityのバージョンは2020.3.24から2022.1.17に渡り7つほど、全て確認しています。
やりたいこと
物理演算の入力パラメータをscriptで制御する。
症状
・プロジェクトにSDKをインポートした後、しばらくは物理演算は正常に動きますが、プロジェクトを一度でも閉じれば、再起動した後は二度と動かなくなります。
・scriptで制御されている入力パラメータだけが動き、さっきまで動いていた出力パラメータは全くの無反応です。
・Animatorで入力パラメータを動かせば、物理演算は正常に機能します。
・Animatorで入力パラメータを動かせ、同時にscriptで制御をかける場合、入力パラメータはscript通りに動くが、出力パラメータはAnimatorの結果だけを反映します。
・SDKを再インポートしても変化ありません。
・サンプルモデルのMaoで確認済み。
このままでは作業ができないので、大変困っています。至急解決案を提示願います。
追伸:早急な解決が難しい場合、物理演算の修正が入っていないSDK for Unity R5 beta4をまず試してみたいですが、どこかからダウンロードできますでしょうか?
obs
2
SDKの過去バージョンは公式サイトにはありませんが、GitHubの方から落とすことができます。
Live2Dのスタッフさんの方からすぐ返信はあると思いますが、急いでいるご様子でしたので取り急ぎダウンロード方法だけお伝えさせていただきました。
Syu
4
お恥ずかしながら、使い方がわかりませんでした…
ダウンロードできたのはunitypackageではなくパッケージの内容が入っているzipファイルで、readmeの記載通りに中身をプロジェクトに入れてもダメでした。
ただ、旧バージョンのCubismEditor4.1でmoc3ファイルを書き出し、unity2021.3.10にSDKforUnity r.4.2(HDDをよく探したら出てきました)を入れてモデルを読み込んでも、やはり「プロジェクト再起動後、Scriptから入力の物理演算が無効になる」という現象は起きました。
もはやSDKのバージョン云々の問題ではなさそうなので、他の作業を進めながら、スタッフさんの返事を待ちます。
「いいね!」 1
@Syu 様
弊社製品をご利用いただきまして誠にありがとうございます。
Cubism SDK 開発チームです。
「物理演算の入力パラメータをscriptで制御する」とのことですが、こちらはどのような操作かの詳細をお教えいただけませんでしょうか?
よろしくお願いいたします。
Syu
6
ご返信ありがとうございます。
CubismModelにアクセスし、パラメータのvallueをfloat変数にリンクさせています。
コードは以下のものです。
public class Control : MonoBehaviour
{
[SerializeField] CubismModel model;
[SerializeField][Range(-30, 30)] float value;
void LateUpdate()
{
model.Parameters[15].Value = value;
}
}
PlayMode中にInspector上で変数"value"のスライダーを操作することで、物理演算の入力パラメータであるParameters[15]を動かす、という感じです。
あと、ビルドしたアプリは正常です、ビルド後のUnityEditorも正常に戻ります(再起動したらまた動かなくなりますが)。
ややこしくてすみません。早急な解決を望みます。
よろしくお願いいたします。
@Syu 様
回答ありがとうございます。
確認する限り、おそらく各コンポーネントの実行順が原因だと思われます。
GameObjectにつけられたコンポーネントがどのような順番で実行されるかはUnityによって決められます。
そのため、作成していただいたコンポーネントが物理演算の計算よりも後に実行された場合、値操作の結果が物理演算に反映されません。
Cubism SDK for Unityでは、コンポーネントの実行順序を制御する機能があり、こちらを利用することで解消されるかと思われます。
利用方法は、Cubism SDK チュートリアルの「独自のコンポーネントの実行順を制御させる」をご覧ください。
よろしくお願いいたします。
「いいね!」 1
Syu
8
ご返答ありがとうございます。
パラメータの値を制御する操作の実行順を、物理演算の前に設定したことによって、問題は解決しました。
迅速なご対応、本当にありがとうございました。助かりました!