diff --git a/Packages/net.fushizen.modular-avatar/Runtime/ModularAvatarBoneProxy.cs b/Packages/net.fushizen.modular-avatar/Runtime/ModularAvatarBoneProxy.cs index 0545c8d1..0d8f3c2a 100644 --- a/Packages/net.fushizen.modular-avatar/Runtime/ModularAvatarBoneProxy.cs +++ b/Packages/net.fushizen.modular-avatar/Runtime/ModularAvatarBoneProxy.cs @@ -47,11 +47,29 @@ namespace net.fushizen.modular_avatar.core private void CheckConstraint() { - if (constraint != null) + if (target != null) { - if (!UnityEditor.PrefabUtility.IsPartOfPrefabAsset(constraint)) + if (constraint == null) { - UnityEngine.Object.DestroyImmediate(constraint); + constraint = gameObject.AddComponent(); + constraint.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector; + constraint.AddSource(new ConstraintSource() + { + weight = 1, + sourceTransform = target + }); + constraint.translationOffsets = new Vector3[] {Vector3.zero}; + constraint.rotationOffsets = new Vector3[] {Vector3.zero}; + constraint.locked = true; + constraint.constraintActive = true; + } + else + { + constraint.SetSource(0, new ConstraintSource() + { + weight = 1, + sourceTransform = target + }); } } }