Как я могу добавить GameObject (или Transform ->object.transform) к родительскому компоненту ограничения во время выполнения? https://docs.unity3d.com/ScriptReference/Animations.ParentConstraint.html
В инспекторе Unity показывает, что компонент «Родительский контроль» принимает преобразование в качестве источника, как показано на изображении ниже. В коде ParentConstraint.AddSource требуется объект ConstraintSource. Но пытаясь сделать это в коде, он жалуется, что ограничениеSource не может быть преобразованием
!https://drive.google.com/open?id=1YOdCQj6MWKgZkgfkaw0DDV5SlI_Apd35
ConstraintSource mySource = m_RealObjOnPlane.transform;//error - can't convert Transform to Animations.ConstraintSource
Xaxis.GetComponent<ParentConstraint>().AddSource(mySource);//AddSource only takes a ConstraintSource
Ожидается, что я смогу изменить источник родительского контроля во время выполнения.





ConstraintSource constraintSource;
void Start()
{
var go = new GameObject("Source");
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
var parentConstraint = cube.AddComponent<ParentConstraint>();
constraintSource.sourceTransform = go.transform;
parentConstraint.AddSource(constraintSource);
}
Так что в вашем случае это должно быть что-то вроде этого
mySource.sourceTransform = m_RealObjOnPlane.transform;
Unity присваивает вес 0 источнику во время выполнения, поэтому в моем случае мне пришлось добавить limitedSource.weight=1; см. Вес источников в нижней части спецификации docs.unity3d.com/Manual/class-ParentConstraint.html
Просто для ясности: не Unity присваивает значение 0 для limitedSource.weight, а скорее инициализация по умолчанию члена структуры с плавающей запятой (ConstraintSource — это структура). В приведенном выше коде, поскольку ConstraintSource.weight никогда не присваивается значение, он просто сохраняет значение по умолчанию 0f.
Я, конечно, могу добавить правильный источник с этим ответом, спасибо @buxter. К сожалению, я пытаюсь смоделировать отношения родитель-потомок с помощью этой функции, но «дочерний элемент» не перемещается, когда перемещается «родительский».