/// <summary> /// SourceのUpdateよりも先か後かはその時による。 /// 厳密に制御するのは無理。 /// </summary> public override void Process() { if (Source == null) { enabled = false; return; } if (m_src == null) { m_src = new ConstraintSource(Source, SourceCoordinate, ModelRoot); } if (m_dst == null) { m_dst = new ConstraintDestination(transform, DestinationCoordinate); } // 軸制限をしたオイラー角 var delta = m_src.RotationDelta; var fleezed = FreezeAxes.Freeze(delta.eulerAngles); var rotation = Quaternion.Euler(fleezed); // Debug.Log($"{delta} => {rotation}"); // オイラー角を再度Quaternionへ。weight を加味してSlerpする m_dst.ApplyRotation(rotation, Weight); }
public void Process() { if (Source == null) { enabled = false; return; } if (m_src == null) { m_src = new ConstraintSource(Source, ModelRoot); } if (m_dst == null) { m_dst = new ConstraintDestination(transform, ModelRoot); } OnProcess(); }
public override void Process() { if (Source == null) { enabled = false; return; } if (m_src == null) { m_src = new ConstraintSource(Source, SourceCoordinate, ModelRoot); } if (m_dst == null) { m_dst = new ConstraintDestination(transform, DestinationCoordinate); } var delta = FreezeAxes.Freeze(m_src.TranslationDelta); m_dst.ApplyTranslation(delta, Weight); }
/// <summary> /// Editorで設定値の変更を反映するために、クリアする /// </summary> void OnValidate() { // Debug.Log("Validate"); m_src = null; m_dst = null; }