Or instead of just adding upwards velocity, get their position when they grab and keep resetting them to it.
function Player::parkourGrabLoop( %this , %pos)
{
cancel( %this.parkourGrabLoop );
if ( !isObject( %this ) )
{
return;
}
if ( !%this.isGrabbing )
{
%this.changeDatablock(PlayerParkourArmor.getID());
return;
}
if ( !%pos )
{
%pos = %this.getPosition();
}
%this.changeDatablock(PlayerStaticArmor.getID());
%tempRot = getWords(%this.getTransform(),3,6);
%this.setTransform(%pos SPC %tempRot);
%this.parkourGrabLoop = %this.schedule( 32, "parkourGrabLoop" , %pos);
}
This is untested and was written on my phone, no guarantees.