I ended up using DOTween to calculate a new position, then I ran the below every frame to apply the new position.
C#:
public override void Update()
{
base.Update();
if (vectorTween.IsActive())
{
ApplyPosition();
}
}
public override void ApplyPosition()
{
base.ApplyPosition();
m_CharacterLocomotion.MoveDirection = targetPosition - m_Transform.position;
}
EDIT: So this only sort of works. It seems like the character still sinks while dashing, even though I disabled gravity.
EDIT 2: this ended up making my character pretty jittery. Instead, I used the CharacterLocomotion component's AddForce method. This gave me a smooth motion from start to end. One thing to note, the character will tend to overshoot their intended target. To solve this, I used SetPosition in the AbilityEnded method to halt my momentum and make sure I stopped where I wanted.