17 de fevereiro de 2015

Como criar Multitelas

O recurso de multitelas (duas ou mais views) pode ser utilizado para multiplayer, como é feito no Mario Kart, ou outras funcionalidades do jogo como, por exemplo, mostrar pelo retrovisor o que se passa atrás do jogador em um jogo de corrida. Neste tutorial vou explicar como criar múltiplas telas/views e alguns códigos úteis.

Múltiplas Views no Game Maker
Exemplo de Multitelas com jogador 1 (azul) e jogador 2 (vermelho)

Primeiro é necessário ativar as views no editor da room ou por meio de código, que nesse caso será a view[0] e a view[1], definir a borda e o objeto que cada uma irá seguir. É importante lembrar que como estamos dividindo a tela, também devemos diminuir uma das resoluções, por exemplo: se seu jogo possui uma resolução de 1920x1080, com essa separação de telas ele deverá ser 1920x540, caso contrário os sprites serão esticados.

//Configurando as views

view_enabled[0] = true
view_enabled[1] = true

view_visible[0] = true
view_visible[1] = true

view_object[0] = obj_jogador1
view_object[1] = obj_jogador2

view_hborder[0] = 960
view_vborder[0] = 270

view_hborder[1] = 960
view_vborder[1] = 270

//Definir a posição das views

altura= window_get_height()
largura = window_get_width()

view_xport[0] = 0
view_yport[0] = 0
view_wport[0] = largura
view_hport[0] = altura/2

view_xport[1] = 0
view_yport[1] = altura/2
view_wport[1] = largura
view_hport[1] = altura/2

Com esses código já é possível ter as duas telas em funcionamento. Para desenhar apenas em uma das views, como "Player1", "Player2", as setas na imagem acima, é necessário fazer uso da função view_current. Esta função não pode ser modificada, mas "mostra" qual das views está sendo desenhada no momento, visto que todos objetos são desenhados uma vez para cada view ativa.

//Desenhar "Player1" e "Player2" e a linha de separação das telas

if view_current = 0
{
    draw_text(view_xview[0] + 50, view_yview[0] + 50, "Player 1")
    draw_line(view_xview[0], view_yview[0] + view_hview[0], view_xview[0] + view_wview[0], view_yview[0] + view_hview[0])
}
else
{
    draw_text(view_xview[1] + 50view_yview[1] + 50, "Player 2")
    draw_line(view_xview[1], view_yview[1], view_xview[1] + view_wview[1], view_yview[1])
}

Agora basta definir quais serão os comando para cada jogador e chamar algum amigo para jogar com você.

Nenhum comentário :

Postar um comentário