Pues en el PROCESS del JugadorRojo (el Sprite) hice como tú pero no usé overlap:
If (collision (TYPE mouse) And cogiendo == 0)
cogiendo=1;
Else
cogiendo=0;
End
Con eso hago que aunque muevas muy rápido el ratón "cogiendo" vale 1 y por tanto sigue al ratón hasta soltar mouse.left.
Luego en otro Process controlo el movimiento del PROCESS JugadorRojo, pero al hacer click en vez de mover el JugadorRojo a el ratón, muevo el ratón a x e y centrales de JugadorRojo y así evito que se mueva el JugadorRojo y haga un efecto raro.
No sé si se entiende, pero vamos es algo sencillo.