One last question about TestMove(), I've got my NPC checking for collisions with it now, but it doesn't seem to recognize collisions above it or to the left of it. I assume this has to do with negative values, but do you have any idea what's going on here? Here's the code for my physics process. follow is a PathFollow2D.
Vector2 motion = new Vector2();
float OldOffset = follow.GetOffset();
float StandardMovement = motionSpeed * delta;
follow.SetOffset(follow.GetOffset() + (motionSpeed * delta));
motion += follow.Position;
motion -= Position;
MoveAndCollide(motion);
if (TestMove(Transform, motion))
{
follow.SetOffset(OldOffset);
SetPosition(follow.GetPosition());
}