Vamos corrigir isto adicionando sons e efeitos sonoros nele.
Adicionando Música
Assim como qualquer recurso do gamemaker, é muito fácil importar músicas. Mas primeiro, precisamos pegá-las. A música que escolhi hoje é esta aqui, chamada “Fun in a Bottle” composta por Kevin MacLeod e licenciada em Creative Commons.
Agora que baixou a música, assim como os outros recursos, ela pode ser importada pelo clique no ícone da música no Windows Explorer e arrastada para dentro do programa. Isto vai abrir as propriedades da Música:
O editor de código irá abrir. O código aqui inserido será executado quando a room for iniciada, antes mesmo dos objetos que compõe a room. Agora adicione a seguinte linha:
01. audio_play_sound(snd_FunInABottle, 0, true);
A função audio_play_sound possui três parâmetros: a primeira é o nome da música, aquela que definimos quando a importamos para o nosso projeto. O segundo parâmetro é a prioridade, que serve para quando houver necessidade de desativar alguma música, as de baixa prioridade são escolhidas para serem silenciadas. O terceiro parâmetro é se a música deve ficar em loop ou não. Queremos que fique em loop, então sempre que a música acabar, ela será reiniciada. Se você testar agora, a música tocará assim que o jogo começar.
Para fins de boas práticas de programação, sempre que iniciar uma música, é bom verificar se a mesma não está tocando. Isto evitará possíveis erros causados por recursos já sendo utilizados, e o que acabei de falar vale não só para o GameMaker, como para qualquer ferramenta que utilize. Para fazer este código preventivo, vamos modificar o código para que fique assim:
01. if (audio_is_playing(snd_FunInABottle) == false) {
02. audio_play_sound(snd_FunInABottle, 0, true);
03. }
Aqui, verificamos se a música “snd_FunInABottle” não estiver tocando, então começamos a tocar.
Efeitos Sonoros
Cada vez que a bola acertar uma flor, vamos executar este som aqui, chamado de Eye Poke, composto por Klocko e sob licença Attribution 3.0. Importe o som como fizemos para a música, e nas configurações, renomeie-o para “snd_EyePoke”.
Agora, vamos fazer com que a cada batida da bola nas flores seja emitido um som e para uma sequência de flores batidas, aumente um pouco o tom do som. Para isso, abra o “obj_bola”, selecione o evento “Create” e adicione o seguinte código:
01. emit = audio_emitter_create();
02. tom = 1;
Audio Emitter, que em inglês significa emissor de som, como o nome diz, controla a emissão de som. Com um emissor, podemos até mesmo alterar os sons que serão reproduzidos, que é o nosso objetivo. Na segunda linha, temos uma variável chamada “tom” sendo igual a 1. Ela controlará a tonalidade do som conforme a bola vai rebatendo.
Agora selecione o evento da “Colisão com as flores” e adicione o seguinte código:
01. audio_emitter_pitch(emit, tom);
02. audio_play_sound_on(emit,snd_EyePoke,false,0);
03. if (tom < 2){
04. tom += 0.1;
05. }
Aqui, mandamos o GameMaker ajustar o tom do som. Em seguida executamos o som usando o emissor que criamos no código anterior (primeiro parâmetro). O som executado vai ser o “snd_EyePoke” (segundo parâmetro) e não será repetido (terceiro parâmetro). Finalmente, prioridade 0, que não interessa agora porque não temos grandes seleções de músicas e efeitos sonoros para que isto seja necessário. E por fim, aumentamos o tom, mas limitando o aumento de tom até o 2.
Agora, para restaurar o tom para 1, selecione o evento da colisão com a raquete e insira o seguinte código:
01. tom=1;
E por último, como criamos manualmente o emissor de som, temos que destruí-lo manualmente quando não for mais necessário. Para isso, vamos criar mais um evento, clique em “Add Event” e em seguida “Destroy”. Este evento será executado quando a bola for destruída. Vamos adicionar aqui o seguinte código:
01. audio_emitter_free(emit);
Pronto, isto fará com que o emissor não ocupe memória do computador quando o mesmo não for necessário.