Unity - 如何将运行时源添加到 ParentConstraint

Ser*_*ano 2 c# constraints unity-game-engine

如何在运行时将 GameObject(或 Transform ->object.transform)添加到父约束组件? https://docs.unity3d.com/ScriptReference/Animations.ParentConstraint.html

在检查器中,Unity 显示父控件组件采用变换作为源,如下图所示。在代码中,ParentConstraint.AddSource需要一个 ConstraintSource 对象。但尝试在代码中执行此操作时,它会抱怨constraintSource不能是Transform

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 
Run Code Online (Sandbox Code Playgroud)

期望我可以在运行时更改父控件的来源

bux*_*ter 5

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);
}
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下,它应该是这样的

mySource.sourceTransform = m_RealObjOnPlane.transform;
Run Code Online (Sandbox Code Playgroud)

  • Unity 在运行时为源分配 0 的权重,因此在我的例子中,我必须添加constraintSource.weight=1; 请参阅规范底部的源重量 https://docs.unity3d.com/Manual/class-ParentConstraint.html (2认同)