- ...
- Mensagens : 106
Reputação : 0
Data de inscrição : 26/01/2012
Localização : Guaratinguetá - SP
Criar seu próprio jogo de corrida em 2d
Ter 31 Jan - 16:55:07
Este tutorial vai dar a base para se construir um jogo de corrida.
Por
pura questão de "eu gosto mais de fazer assim", tudo aqui é feito via
GML, mas provavelmente a maior parte, senão tudo, pode ser feito pelas
Actions padrão, neste caso.
Os códigos não estão tão bem explicados, mas são códigos muito simples, fáceis de serem entendidos.
Crie um novo projeto.
Lembre-se
que vamos fazer apenas o jogo funcionar. Se você quiser, depois pode
incrementá-lo com sons e gráficos melhores, mas eu vou usar o que for
mais fácil e simples. Os gráficos usados estão anexados neste post.
Crie
um sprite spr_carro usando a imagem do carro. Abra o Sprite Editor, e
no menu Transform, vá em Resize Canvas, pra modificar o tamanho da
imagem. Desmarque a caixa Keep aspect ratio, e coloque 90 por 90 (vai
dar 214% por 115%) e dê OK. Agora vá em Transform > Rotate 90
clockwise.
Agora, vamos animar o carro, para dar a impressão de
curva, de que o carro gira. Na guia Animation, vá em Rotation Sequence
> Counter-Clockwise, e coloque 72 frames. Veja que foram criados
frames de animação do carro girando de 5 em 5 graus (isto é, 360 graus,
volta completa, divididos por 72, número de frames).
Se você marcar a opção Show Preview, verá o carro girando.
Dê OK, centraliza as coordenadas do sprite, clicando em Center e dê OK novamente.
Agora vamos criar um sprite que irá delimitar as laterais da pista.
Crie um novo sprite spr_parede usando a imagem do bloco cinza. Desmarque a caixa Transparent, centralize as coordenadas e dê OK.
Agora,
vamos criar o sprite do adversário. Duplique o spr_carro, coloque como
spr_carro2, vá no Sprite Editor, Image > Colorize Partial, e coloque
uma cor diferente do outro carro.
Usando a imagem do retângulo quadriculado, crie o spr_chegada.
Acabamos os sprites. Vamos aos Objects.
Primeiro, o obj_carro, o carro controlável pelo jogador.
Coloque o spr_carro, marque a opção Solid, vá no evento Create e coloque o código abaixo:
Código:
friction = .6
image_speed = 0
No evento Step, coloque este código:
Código:
if keyboard_check(vk_up) then motion_set(direction,10);
if keyboard_check(vk_right) then direction -= 5;
if keyboard_check(vk_left) then direction += 5;
image_index = direction * image_number/360;
Pronto. Assim o carro já se move, faz curva, desacelera se você parar de pressionar, e o sprite aponta para a direção certa.
Crie um objeto obj_parede, coloque o spr_parede, marque a caixa Solid, e volte ao obj_carro.
No obj_carro, evento Collision > obj_parede, adicione este código:
Código:
move_contact_solid(direction,-10)
Próximo
passo, o adversário. Pra que ele percorra a pista, vamos usar um Path.
Mas para isso, antes teremos que criar a room da pista. Crie uma room, e
delimite a pista com o obj_parede. Ainda na room, não esqueça de
definir uma View que siga o obj_carro, para você sempre vê-lo (uma das
Aulas de GML fala sobre Views, caso você não saiba usar).
Antes de
criar o Path, crie o obj_carro2, e faça igual ao obj_carro, só retire a
parte do evento Step que tem keyboard_check, deixe só a última linha.
Coloque um obj_carro2 na room da pista.
Agora crie um Path.
Aparecerá
a janela Path Properties. Na barra de ferramentas, o último ícone é
Indicate a room to show as background. Clique nesse ícone e escolha a
room da sua pista. Ela apareceu no fundo, não é mesmo?
Então, agora é só você definir o caminho que o carro adversário vai seguir nessa pista.
Uma vez que você marcou todos os pontos e definiu o path, salve e vá no obj_carro2.
No evento Create do obj_carro2, adicione esta linha:
Código:
path_start(nome_do_seu_path,8,0,0)
Esta
linha configura para este objeto o path que você fez, com velocidade 8,
indica que ele deve parar ao fim do path e que a posição do path é
relativa.
Na ajuda do GM, se você consegue ler em inglês, há muito mais detalhes sobre isso aqui e tudo que já foi feito antes.
Agora, para evitar que os carros se choquem, no evento Collision > obj_carro2 do obj_carro, coloque este código:
Código:
move_outside_solid(direction,16)
Agora
para terminar, vamos fazer a linha de chegada. Crie um objeto
obj_chegada, usando o spr_chegada. No evento Step, coloque este código:
Código:
if collision_rectangle(x-64,y-8,x+64,y+8,obj_carro,1,0)
{
show_message("Player 1 WIN");
game_restart();
}
else if collision_rectangle(x-64,y-8,x+64,y+8,obj_carro2,1,0)
{
show_message("CPU WIN");
game_restart();
}
Este código irá mostrar na tela quem venceu ("Player 1" ou "CPU") e depois irá reiniciar o jogo
Tutorial feito por:
mod_ptck
Do site: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Por
pura questão de "eu gosto mais de fazer assim", tudo aqui é feito via
GML, mas provavelmente a maior parte, senão tudo, pode ser feito pelas
Actions padrão, neste caso.
Os códigos não estão tão bem explicados, mas são códigos muito simples, fáceis de serem entendidos.
Crie um novo projeto.
Lembre-se
que vamos fazer apenas o jogo funcionar. Se você quiser, depois pode
incrementá-lo com sons e gráficos melhores, mas eu vou usar o que for
mais fácil e simples. Os gráficos usados estão anexados neste post.
Crie
um sprite spr_carro usando a imagem do carro. Abra o Sprite Editor, e
no menu Transform, vá em Resize Canvas, pra modificar o tamanho da
imagem. Desmarque a caixa Keep aspect ratio, e coloque 90 por 90 (vai
dar 214% por 115%) e dê OK. Agora vá em Transform > Rotate 90
clockwise.
Agora, vamos animar o carro, para dar a impressão de
curva, de que o carro gira. Na guia Animation, vá em Rotation Sequence
> Counter-Clockwise, e coloque 72 frames. Veja que foram criados
frames de animação do carro girando de 5 em 5 graus (isto é, 360 graus,
volta completa, divididos por 72, número de frames).
Se você marcar a opção Show Preview, verá o carro girando.
Dê OK, centraliza as coordenadas do sprite, clicando em Center e dê OK novamente.
Agora vamos criar um sprite que irá delimitar as laterais da pista.
Crie um novo sprite spr_parede usando a imagem do bloco cinza. Desmarque a caixa Transparent, centralize as coordenadas e dê OK.
Agora,
vamos criar o sprite do adversário. Duplique o spr_carro, coloque como
spr_carro2, vá no Sprite Editor, Image > Colorize Partial, e coloque
uma cor diferente do outro carro.
Usando a imagem do retângulo quadriculado, crie o spr_chegada.
Acabamos os sprites. Vamos aos Objects.
Primeiro, o obj_carro, o carro controlável pelo jogador.
Coloque o spr_carro, marque a opção Solid, vá no evento Create e coloque o código abaixo:
Código:
friction = .6
image_speed = 0
No evento Step, coloque este código:
Código:
if keyboard_check(vk_up) then motion_set(direction,10);
if keyboard_check(vk_right) then direction -= 5;
if keyboard_check(vk_left) then direction += 5;
image_index = direction * image_number/360;
Pronto. Assim o carro já se move, faz curva, desacelera se você parar de pressionar, e o sprite aponta para a direção certa.
Crie um objeto obj_parede, coloque o spr_parede, marque a caixa Solid, e volte ao obj_carro.
No obj_carro, evento Collision > obj_parede, adicione este código:
Código:
move_contact_solid(direction,-10)
Próximo
passo, o adversário. Pra que ele percorra a pista, vamos usar um Path.
Mas para isso, antes teremos que criar a room da pista. Crie uma room, e
delimite a pista com o obj_parede. Ainda na room, não esqueça de
definir uma View que siga o obj_carro, para você sempre vê-lo (uma das
Aulas de GML fala sobre Views, caso você não saiba usar).
Antes de
criar o Path, crie o obj_carro2, e faça igual ao obj_carro, só retire a
parte do evento Step que tem keyboard_check, deixe só a última linha.
Coloque um obj_carro2 na room da pista.
Agora crie um Path.
Aparecerá
a janela Path Properties. Na barra de ferramentas, o último ícone é
Indicate a room to show as background. Clique nesse ícone e escolha a
room da sua pista. Ela apareceu no fundo, não é mesmo?
Então, agora é só você definir o caminho que o carro adversário vai seguir nessa pista.
Uma vez que você marcou todos os pontos e definiu o path, salve e vá no obj_carro2.
No evento Create do obj_carro2, adicione esta linha:
Código:
path_start(nome_do_seu_path,8,0,0)
Esta
linha configura para este objeto o path que você fez, com velocidade 8,
indica que ele deve parar ao fim do path e que a posição do path é
relativa.
Na ajuda do GM, se você consegue ler em inglês, há muito mais detalhes sobre isso aqui e tudo que já foi feito antes.
Agora, para evitar que os carros se choquem, no evento Collision > obj_carro2 do obj_carro, coloque este código:
Código:
move_outside_solid(direction,16)
Agora
para terminar, vamos fazer a linha de chegada. Crie um objeto
obj_chegada, usando o spr_chegada. No evento Step, coloque este código:
Código:
if collision_rectangle(x-64,y-8,x+64,y+8,obj_carro,1,0)
{
show_message("Player 1 WIN");
game_restart();
}
else if collision_rectangle(x-64,y-8,x+64,y+8,obj_carro2,1,0)
{
show_message("CPU WIN");
game_restart();
}
Este código irá mostrar na tela quem venceu ("Player 1" ou "CPU") e depois irá reiniciar o jogo
Tutorial feito por:
mod_ptck
Do site: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Permissões neste sub-fórum
Não podes responder a tópicos