O jeito mais simples seria dividir o seu código em avançando (ou atacando) e voltando.
O de avançar já esta feito, só poderia estar um pouco mais bem organizado.
O que você faria é garantir que ao final da animação (eu não vi no código como você esta lidando com a animação) ele iria para o momento de voltando.
Você pode lidar ele do jeito que esta lidando, e fazer o teste usando o xstart e o ystart, se o x - xstart < 20 (por exemplo) então x = xstart, desta forma ele volta para a posição inicial, eu usaria um lerp para não deixar forçada a transição, mas isso é um detalhe.
depois de definir o x = xstart e o y = ystart você tira ele do voltando, e pronto ele deve ficar parado.
Depois dê uma olhada neste vídeo
https://youtu.be/irDKx_vCYsE
Eu não sei como você esta lidando com a animação, mas aconselho a NESTE caso não usar o evento animation end, o vídeo que vem depois do que eu postei mostra uma maneira mais controlada de lidar com o final e o inicio da animação.
Você não precisa (e tecnicamente não deveria) tornar as variáveis globais, o escopo delas já abrange todo o player, basta cria-las (sem o var) dentro do create event, variáveis globais geralmente são criadas para que outros objetos possam acessa-las.