Files
2026-03-04 10:03:45 +08:00

49 lines
986 B
C#

using System;
using UnityEngine;
namespace RootMotion.FinalIK
{
[Serializable]
public class ConstraintPositionOffset : Constraint
{
public Vector3 offset;
private Vector3 defaultLocalPosition;
private Vector3 lastLocalPosition;
private bool initiated;
private bool positionChanged => transform.localPosition != lastLocalPosition;
public override void UpdateConstraint()
{
if (!(weight <= 0f) && base.isValid)
{
if (!initiated)
{
defaultLocalPosition = transform.localPosition;
lastLocalPosition = transform.localPosition;
initiated = true;
}
if (positionChanged)
{
defaultLocalPosition = transform.localPosition;
}
transform.localPosition = defaultLocalPosition;
transform.position += offset * weight;
lastLocalPosition = transform.localPosition;
}
}
public ConstraintPositionOffset()
{
}
public ConstraintPositionOffset(Transform transform)
{
base.transform = transform;
}
}
}