Tutorial level warp - Inglês
https://www.youtube.com/watch?v=CSX-bZDsI28&t=73s
Bom, o sistema funciona da seguinte maneira:
primeiramente criei um objeto control e no room_start dele coloquei
Código: Selecionar todos
global.pos_x= ob_player.xstart
global.pos_y= ob_player.ystart
Código: Selecionar todos
x= global.pos_x;
y= global.pos_y;
proximo objeto é o ob_warp ele praticamente é o objeto chave que ao contato com o player faz a transição das room e do posicionamento do player entra as roons.
No objeto player no evento colisão com o ob_warp
Código: Selecionar todos
global.pos_x= other.target_x;
[size=85][font=monospace][b]global.pos_y[/b][/font][/size]= other.target_y;
room_goto(other.target_r);
O segredo está exatamente nessa parte. as variáveis target são modificadas dentro da room fazendo com que possa criar varios posicionamento e enviar o player para qualquer room que quiser.
Bom na room onde está o ob_warp clique o com botão direito no objeto e vá em "Create Code" coloque dessa forma
Código: Selecionar todos
target_r= ro_castle_01;
target_x= 2838;
target_y= 828;
Agora vem a minha dúvida, esse tutorial funciona para jogos topviews como ele mostra no vídeo. porem para meu jogo que é um 2D plataforma não funciona pelo simples fato de se você for no canto da tela e pular quando ele aparecer na outra room ele estará no chão. isso porque definimos as coordenadas com ele no chão....então como fazer com que ele mantenha a altura dele do pulo e cair na outra room.
Um exemplo perfeito são os jogos castlevania onde o sistema de transição entre as room é suave vc pula e ele cai certinho entre as roons.