sexta-feira, 20 de janeiro de 2012

[Willy] Aprendendo a usar alarms!

Qualidade
Nome: Aprendendo a usar alarms!
Blogueiro: Willy
Descrissao: Este é o meu primeiro tutorial como colaborador, e o tema deste tutorial será aprender a usar alarms!
Muita gente por aqui tem dificuldades em entender como usar os alarms, neste tutorial, vou ensinar o que é um alarm e como usar.

Versao: Lite e Pro
Foto(s):

Tutorial:

Primeiramente, vamos a parte teórica da aula.
Um alarm tem a função de um alarme (sério?), ou seja, você ajusta um "horário" e quando o a hora atual for igual a hora que você ajustou, ele faz sua função, ou seja, faz um barulho irritante e voa para a parede. Basicamente, isso é um alarme.
O Game Maker disponibiliza até 12 alarmes para serem usados, sendo que vai desde o “0” até o “11”. Recomendo que sempre use os alarmes na ordem. Por exemplo, se precisar usar 3 alarmes, não use o alarm[7], alarm[2] e o alarm[10], isso vai complicar sua vida. Use de forma gradual, ou seja, alarm[0], alarm[1] e alarm[2].

Vamos a parte prática agora. Pra começar, algo muito simples. Ativar um alarm no create.
Crie um objeto (com qualquer sprite) e no evento Create, coloque:
Código:
alarm[0]=30*3

E no evento Alarm[0]:
Código:
Instance_destroy()

Esse objeto tem uma função muito simples, no Create¹, ele ativa o alarme, e no Alarm[0] ele se autodestrói.
Spoiler:

Essa é uma forma bem simples de se usar um alarm, mas vão ser poucas vezes que você vai usar no create. Mas então, aonde se usa mais? Ah, claro, no step!
Ai você vai, coloca isso no step e...

_Caramba! Não funciona? Porqueeeeeeeeeeeeeeeeeeeeeee?

Muito simples, o evento step executa os códigos constantemente, ou seja, a cada frame, vai mudar o valor do alarm, ou seja, ele SEMPRE vai fiar 90.
E nesse ponto que o pessoal declara:

_É, eu não sei usar alarms.

As pessoas vêem o alarm como um bicho de 84 cabeças (7 cabeças por alarm ), mas depois que descobrem a coisa simples que direi agora, tudo fica fácil (eu acho). O segredo é muito simples, é o uso de variáveis!
Com a variável, eu posso checar se o alarm já foi ativado ou não!

Vamos fazer um exemplo pratico com o uso de alarm no step.
Crie dois sprites, uma bolinha pequena e uma grande. Marque a "origin" dos sprites como "center" .
Agora, crie um objeto para a bolinha grande. Chame-a como quiser.
Primeiramente, coloque no campo "depth" o valor "-1" para que fique sobre as bolinhas que esse objeto vai criar.
No create dela, iremos criar uma variável:
Código:
atirou=false

Essa é a variável que vamos usar para checar se o alarme foi ativado ou não.
Agora, no step, vamos colocar isso:
Código:
if atirou=false{//Se não tiver atirado
alarm[0]=15 //Ativa o alarme (1/2 de segundo)
atirou=true //Diz que atirou¹
}
//1: Isso impede que o alarme não fique sempre 15!


Checamos se a variável "atirou" é false, e, se for, ativa o alarm e se torna true, impedindo de o alarm sempre ficar 15.
No alarm[0], você coloca isso:
Código:
instance_create(x,y,obj_bola_pequena)//Cria o objeto bola_pequena quando o alarme for ativado.
atirou=false//Torna possível atirar novamente

Quando o valor do alarm[0] for 0, ou seja, quando ele acabar, ele executa sua função, que no caso acima, é criar uma bolinha.

Pronto, o seu sistema de alarm já esta funcionando. Porém, se executar assim, vai perceber que as bolinhas não se mechem. Mas por quê? Porque não definimos uma função para a bolinha fazer. Vamos fazer algo bem simples, vamos fazer ela correr em uma direção aleatória.
No create do "obj_bola_pequena", coloque isso:
Código:
//Aqui vamos definir a função da bolinha, que no caso, é andar para uma direção aleatória.direction=random(360)//¹
speed=10//Velocidade da bolinha

1:direction é a direção da bolinha. Random faz uma direção aleatória entre 360 graus.
Nesse caso, estamos definindo a direção dela usando a função random (aleatório) em 360.
Speed é a velocidade da bolinha.
Não se esqueça de colocar isso no "outiside room":
Código:
instance_destroy()//Se destruir ao sair da room


Agora sim, seu sistema de alarme esta pronto!
Você podem baixar o .gmk do tutorial clicando aqui! (MediaFire)


[EDITADO]
A pedido do saim preparei mais um exemplo para vocês verem como é a "contagem regressiva" do alarm. Não sei se funciona no lite, se alguém testar no lite e funcionar ou não, me avisem.

Primeiramente, crie mais um objeto, e no create, coloque:
Código:
alarm[0]=30 //1 segundo

No alarm[0], repita
Código:
alarm[0]=30//1 segundo

Até aqui, estamos fazendo a cada 1 segundo, ativar o alarm[0] infinitamente.
Agora que vem a parte legal, no evento draw, coloque:
Código:
draw_rectangle(x+alarm[0],y+alarm[0],x-alarm[0],y-alarm[0],true)

Aqui estamos desenhando um quadrado, sendo que suas dimensões são o valor do alarm[0]."true" quer dizer que é para desenhar apenas a outline, se você colocar false, vai desenhar um quadrado com preenchimento.
Obs.: Ao usar DRAW, o sprite do objeto não aparece.
Testem e vejam o resultado (ficou bonitinho)!

Espero que tenham gostado e entendido!
Duvidas é só falar!
blz
Creditos: Willy

Nenhum comentário:

Postar um comentário