実現したいこと
Unityのアニメーションリギング MultiParentConstraint内の sourceObjectをランタイム中にスクリプトから変更したい。
前提
キャラクターの手足にTwoBoneIK を設定し、MultiParentConstraintのConstraintedObjectにTwoBoneIKのターゲットを設定しています。
RigはTwoBoneIKとMultiParentConstraintでレイヤー分けしています。
RigBilderへはRig_MultiParentConstraint、Rig_TwoBoneIKの順で登録しています。
発生している問題・エラーメッセージ
sourceObjectにインスペクターから直接ターゲットを設定し
エディターシーン上でキャラクターのアニメーション編集中では上手く動作しています。
しかしながらランタイム中にスクリプトからsourceObjectへターゲットを設定しても動作が反映されません。
インスペクター上ではターゲットはsourceObjectに入ってます。
該当のソースコード
public class ParentConstraintData
{
public IK_ParentPart iK_ParentPart;
public MultiParentConstraint multiParent;
}
public bool SetPartnerTargetBone(IK_ParentPart parentPart, Transform target)
{
foreach(var p in parentConstraintDatas)
{
if (p.iK_ParentPart == parentPart)
{
var data = p.multiParent.data;
var newSources = new WeightedTransformArray(); newSources.Add(new WeightedTransform(target, 1f)); data.sourceObjects = newSources; p.multiParent.data = data; p.multiParent.weight = 1f; return true; } } return false; }
試したこと
ChatGPTでも質問してMultiParentConstraint.enabledのオン、オフなど試しましが出来ず、
最終的にはソースオブジェクトにターゲットとなり得るオブジェクトを最初から登録し重みずけで変更が確実という回答になりました。
しかしターゲットは常にシーン上にあるわけではないので困っています。
補足情報(FW/ツールのバージョンなど)
Unityのバージョンは2022.3.62f1
AnimationRigging 1.2.1
よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。