Escolar Documentos
Profissional Documentos
Cultura Documentos
Categoria: Tutorial
Gênero: Plataforma
Plataforma: Game Maker 8 PRO
Nível: Iniciante
Créditos: Allison
Vamos Ao Trabalho
Primeiro precisamos ter as sprites prontas, vamos usar as sprites do maze-plataform que
já vem instalado com o Game Maker, procure a pasta do Game Maker, creio que foi
instalado no Disco C/, depois de achado vá na pasta: Sprites e depois em maze-
plataform se você achou ótimo, agora já sabemos onde estão os sprites.Agora abra seu
Game maker coloque as sprites:
explorer_left_strip8 = player_esquerda
explorer_right_strip8 = player_direita
explorer_jumpleft = player_pulando_dir
explorer_jumpright = player_pulando_esq
wall_block = bloco
gem_green_sparkle_strip32 = moeda
apple = maçã
key_gold_sparkle_strip32 = chave
chest_reinforced_closed = bau_fechado
chest_reinforced_open = baú_aberto
gold_bar_sparkle_strip32 = barra_de_ouro
item_life = vida
exitsign = sair
Teremos outro tipo de sprite, a do inimigo, que não consegui achar na pasta do Maze-
plataform então passarei a imagem e vocês colocam lá ok ? as imagens são:
vocês salvam essa imagem e giram para o lado oposto depois faça um strip das
duas ou melhor, uma animação, se você não sabe pergunta para alguem ou vbr algum
tutorial o neme dele será: inimigo_direita e inimigo_esquerda
os nomes que estão depois de (=) são o nome que vocês deveram dar aos sprites, crie
objetos com todas menos o player que é só 1 objeto para as suas sprites, para fazer os
sprites do player parado basta copiar a primeira imagem do player e depois criar outra
sprite e colar, é muito simples, os objetos deveram ter os mesmos nomes só que antes da
palavra o nome (obj_)por exemplo, obj_bloco, obj_bau_aberto deverá ficar mais ou
menos assim:
Código:
image_speed=0.5; //É a velocidade da animação do nosso
personagem. Aqui, você pode colocar o valor que desejar.
parado=true; //Variável para indicar se o personagem está parado
ou não.
andando=false; //Variável para indicar se nosso personagem está
andando ou não.
noar=false; //O valor dela vai indicar se o personagem está no
ar ou não. Importante para a checagem dos sprites.
lado=0; //O lado para que o nosso personagem está virado. 1
seria virado para a direita e 0 para a esquerda
Pronto, já declaramos as variáveis agora falta fazer ele se movimentar, coloque no step:
Código:
/////////////////////////////////Gravidade//////////////////////
//////////
if (place_free(x,y+1)) //Checa se 1 pixel abaixo está vazio, ou
seja, não tem chão.
{gravity=0.5; noar=true;
//Coloca valor na gravidade e define a variável noar para true,
ou seja, o personagem não está no chão.
} else
//Se a expressão place_free for falsa, ou seja, tenha chão
embaixo:
{gravity=0; noar=false; //Gravidade se torna zero e a variável
noar se torna false, ou seja, o personagem está no chão.
}
////////////////////////////Definiões de
pulo////////////////////////////
if (keyboard_check_pressed(vk_up)) && ! (place_free(x,y+1))
//Checa se a tecla de direção cima foi pressionada e se NÃO tem
um pixel livre abaixo.
{
vspeed=-8; noar=true; //Se for verdade, velocidade vertical se
torna 5 negativo e a variávell noar se torna true, ou seja, o
personagem NÃO está no chão.
}
if ! (keyboard_check(vk_left)) && !
(keyboard_check(vk_right)) //Checa se a tecla direita e a tecla
esquerda não estão sendo precionadas.
{andando=false; parado=true; //Caso seja verdade, a variável
andando se torna false, ou seja, o personagem NÃO está andando.
E a variável parado se torna true, ou seja, o personagem está
parado.
}
//////////////////////////////////Sprites///////////////////////
/////////////
if (noar==false) //Checa se o personagem está no ar.
{
if (andando=true) && (lado==1) //Checa se o personagem está
andando e se ele está virado para a direita.
{
sprite_index=player_direita; //Se sim, a sprite dele se torna a
sprite do personagem andando para a direita.
}
if (andando=true) && (lado==0) //Checa se o personagem está
andando e se ele está virado para a esquerda.
{
sprite_index=player_esquerda; //Se sim, o sprite dele se torna a
sprite do personagem andando para a esquerda.
}
if (andando==false) && (parado==true) && (lado==1) //Se o
personagem não está andando, se o personagem está parado e está
virado para a direita:
{
sprite_index=player_parado_dir; //Se sim, a sprite dele se torna
a sprite do personagem parado para a direita.
}
if (andando==false) && (parado==true) && (lado==0) //Se o
personagem não está andando, está parado e está virado para a
esquerda:
{
sprite_index=player_parado_esq; //Se sim, a sprite dele se torna
o sprite do personagem parado para a esquerda.
}
}
else //Caso o personagem NÃO esteja com os pés no chão:
{
if (vspeed>0) || (vspeed<0) && (lado==1) //Se ele está pulando
ou caindo e está virado para a direita:
{
sprite_index=player_pulando_dir; //O sprite do personagem se
torna o sprite dele pulando para a direita.
}
if (vspeed>0) || (vspeed<0) && (lado==0) //Se o personagem está
pulando ou caindo e está virado para a esquerda:
{
sprite_index=player_pulando_esq; //O sprite do personagem se
torna o sprute dele pulando para a esquerda.
}
}
Pronto agora ele já sabe andar, mais... cadê o chão ? Isso, bem lembrado precisamos de
um chão que será o obj_bloco abra-o e marque como sólido que fica no canto esquerdo
da janela que abriu, va no obj_player novamente e crie uma colisão com o obj_bloco e
coloque o seguinte código:
Código:
move_contact_solid(direction,12);
vspeed=0;
agora vamos para a mask do player, crie uma nova sprite e crie um quadrado um pouco
maior doque o player (você pode utilizar o editor de sprites do GM se quiser) e defina
como a mask do player.
Agora vamos ver como ficou!! Crie uma nova room e nela faça a plataforma dos
obj_bloco e coloque o player e qualquer ponto como esse:
Eu não vou fazer um inimigo com inteligência artificial porque acho que para vocês
iniciantes com Game Maker ficaria muito difícil então eu vou usar uma técnica super
fácil, vamos lá!
Primeiro crie um novo sprite edite-o e preencha-o com a cor que você quiser o
importante é que o tamanho seja 32x32 agora crie dois objetos com o mesmo sprite um
se chamará obj_rebate_inim_dir e o outro obj_rebate_inim_esq pronto, desmarque a
opção visible dos dois, va no inimigo e crie um evento creat e execulte um código:
Código:
image_speed=0.5
e vá na aba move e arraste a opção move fixed para dentro das ações, como na imagem
abaixo:
Depois aperte ok
Agora crie uma colisão do player com o obj_rebate_inim_dir depois va na aba move e
selecione a mesma opção anterior: move Fixed mais agora configure diferente, como
você ta colidindo com o obj_inim_rebate_dir é obvio que você va para esquerda,
então... marque somente a seta que aponta para a esquerda e em Speed coloque 1 que
será a velocidade que o nosso inimigo vai andar, não marque relativo e dê ok. Agora va
na aba main1 e procure a opção change Sprite e arraste para a janela de ações, na janela
que abriu escolha na opção:
Sprite: esprite do inimigo indo para esquerda
Submagem: coloque 0
Speed: coloque 0.5
E de ok.
crie uma colisão com o obj_rebate_inim_esq coloque na aba move e depois move fixed
mais agora mude a posição da setinha além deque você esta colidindo com o
obj_rebate_inim_esq a velocidade é a mesma, na aba main1 scolha a opção Chang
Sprite e configure assim:
Sprite: Esprite do inimigo indo para a esquerda
Submagem: coloque 0
Speed: coloque 0.5
De ok.
Pronto nosso inimigo já está andando vamos colocar na room para vermos se deu certo.
Veja a imagem abaixo:
Vá no player e crie uma colisão com o inimigo na colisão coloque o seguinte código:
Código:
if (y < other.y) && (vspeed > 0) // Se a altura dele for maior
que do inimigo e quando colidir em 0 de velicidade
{
vspeed=-5 // Faça ele dar o pulinho pra cima
with(other){score+=10; instance_destroy()} //almenta
pontuação,tocar som,e destruir a outra instância (inimigo)
}
else // Senão
{
//tocar som
//pontuasão = 0
//vidas-=1
room_restart()
} // Recomeça o jogo
Código:
global.pontos=0
global.vidas=3
global.ouro=0
Declaramos as variáveis pontos, vidas e ouro agora vamos usalas! Atenção: Usamos o
global. na frente quando uma variável será usada para outro obj e também colocamos
em Game Start porque elas vão acontecer toda vez que começa e não toda a vez que
inicia.
Código:
if (y < other.y) && (vspeed > 0) // Se a altura dele for maior
que do inimigo e quando colidir em 0 de velicidade
{
vspeed=-5 // Faça ele dar o pulinho pra cima
with(other){pontos+=10; instance_destroy()} //aumenta pontuação
destruir a outra instância (obj_inimigo)
}
else // Senão
{
//você pode colocar um som aqui dele morrendo
global.pontos=0
global.vidas-=1
room_restart()
} // Recomeça o jogo
Código:
global.pontos+=10
isso implica dizer que, quando o player colidir com o obj_moeda ele vai ganhar 10
pontos agora va no obj_moeda e faça uma colisão com o player nela coloque o código:
Código:
instance_destroy()
Agora quando ela colidir com o player ela vai se destoir mais a pontuação vai acontecer
primeiro porque o player que vai chegar nela.
Vamos para o obj_maça nele é bem simples, quero que ele tenha o mesmo
procedimento do obj_moeda só que vou terque fazer o código tudo de novo? Não !!!!
apenas coloque a maçã como parente da moedas, mais como eu faço isso ? Haa é
simples apenas do lado esquerdo de qualquer objeto ali onde coloca o nome mais para
baixo um pouquinho e tem várias opções incluindo “parent” ai é só você escolher o
obj_moedas para ser seu parente.
Vamos para o obj_vida, toda vez que eu colidir com ele, eu quero que eu ganhei 1 vida,
é muito fácil!! Coloque na colisão do player com o obj_vidas assim:
Código:
global.vidas+=1
Código:
instance_destroy()
Vamos agora para o obj_barra_de_ouro, nele eu quero que adicione 1 barra de ouro
aquela variável que usamos lá também é muito fácil é apenas colocar na colisão do
player com o obj_barra_de_ouro:
Código:
global.ouro+=1
Código:
instance_destroy()
Vamos para o obj_sair é muito simples, queremos que quando o player colidir com
obj_sair ele saia d jogo então coloque na colisão do obj_sair com o player:
Código:
game_end()
Vamos para uma parte um pouco trabalhosa agora! a parte das chaves e do baú.
Código:
if tranca == 1 { // Se o player pegar 1 chave
effect_create_above(5,x,y,5,c_white) // Crie um efeito
instance_change(obj_bau_aberto,0) // criar uma instancia que é o
obj_bau_aberto
}
Código:
effect_create_above(1,x,y,3,c_white) // Crie um efeito
obj_porta.tranca += 1 // Adicione uma Chave
instance_destroy() // E destrua
Código:
global.ouro+=2//adiciona mais 2 ouros
global.vidas+=3//3 vidas
global.pontos+=1000// e mil pontos
instance_destroy()
Pronto!! Uffaa!! terminamos todos os objetos mais falta ainda uns mínimos detalhes,
vamos começar pelo mais grave
Queremos que o apareça na minha tela informando quanto eu tenho de vida, ouro,
pontos então é para já! Vamos fazer aparecer agorinha
Código:
draw_set_color(c_white)//pinte da cor branca
draw_text(view_xview[0]+20,view_yview[0]+2,"Pontos:"+string(glob
al.pontos))
draw_text(view_xview[0]+100,view_yview[0]+2,"Vidas:"+string(glob
al.vidas))
draw_text(view_xview[0]+170,view_yview[0]+2,"Ouro:"+string(globa
l.ouro))
A expressão “ “Pontos:” ” é o texto que será desenhado na tela, ele não significa
nenhuma variável por isso que está entre aspas.
A expressão “+string” quer dizer andar em fila, ou seja, vai andar um pouco na mesma
fila.
Vá ao step do player, vamos configurar as vidas, para que quando chegar em 0 ele
morra! Coloque:
Código:
if global.vidas <= 0 then {//se vidas menor ou igual a 0
game_end()//acabar jogo
}
Pronto, vamos mexer agora com a room, vamos definir o tamanho dela e como vai ser
visto quando for iniciada, let’s GO >>>
Width que dizer é o tamanho horizontal da room, eu defini como 1000 e Height é o
tamanho vertical.
Eu fiz de um tamanho mais você pode fazer do tamanho que você quiser vamos definir
as opções de views, va na aba views que fica no mesmo canto da aba settings e
configure como a imagem abaixo: