Alterar volume do jogo no Construct 2

Veja como alterar o volume em um layout e aplica-lo para as demais cenas do seu jogo.

É comum em diversos jogos ter uma opção na qual o player altera o volume do jogo, isto sem a necessidade de largar o controle ou teclado.

As Engine de jogos permitem manipular informações de saída de áudio, dentre elas o volume que será transmitido, sendo assim neste artigo será explicado como fazer um breve mecanismo para alteração de volume em um layout e aplicar para os demais.

Recomendo que para melhor integridade do seu jogo, faça um backup antes de manipular o som e faça um teste seguindo este exemplo em um projeto separado, depois se tudo ocorrer bem, você aplique ao seu game. Isto pelo fato de que você pode se perder e por conta disso comprometer o seu jogo, mas é claro, a regra não é valida para todos.

Com o Construct aberto crie dois layout contendo dois EventSheet.

Criando dois Layout e dois Event Sheet
Criando dois Layout e dois Event Sheet

No Layout 1, insira os componentes abaixo e altere suas respectivas propriedades.

ComponenteNameText

Slide Bar

slbVolume

 

Text

txtVolume

100

Button

btnIniciar

Iniciar

 

No componente Slide Bar defina as propriedades com as configurações abaixo.

ValueMinimumMaximumStep

10

0

25

1

 

Temos nosso layout como mostra a imagem a seguir.

Ajustar o Slide Bar, Text e Button no layout
Ajustar o Slide Bar, Text e Button no layout

Insira um componente Audio e um Local Storage no Layout 1.

O componente Audio será o responsável por reproduzir a música nos nossos jogos, em seguida vamos manipular suas propriedades. Já o componente Storage será utilizado para guardar o valor do volume selecionado.

Adicionar um componente Local Storage e um Audio
Adicionar um componente Local Storage e um Audio

Carregue um arquivo de música para dentro do Construct e no evento System -> On start of Layout defina para iniciar a música (play) e deixar em loop.

No inicio do layout dar play na música
No inicio do layout dar play na música

Adicione outro evento, mas desta vez o Every Tick (a cada frame ou escala), para ação do evento na propriedade Text do componente txtVolume, defina o valor retornado pelo slbVolume (slbVolume.value).

Configurar Every Tick
Configurar Every Tick

Crie uma variável global chama de volume e atribua como valor inicial -10.

Defina para a variável dentro do Every Tick o seguinte valor “int(slbVolume.Value) – 20”, neste cabo obtemos o valor da barra de rolagem, subtraímos 20 e por ultimo fazemos um parse para int, ou seja, o valor retornado será um número inteiro (0..1..500..6000).

 

Dentro do Every Tick, adicione uma nova ação para o componente áudio, na propriedade set máster volume, informe o nome da variável que criamos, note que anteriormente definimos a ela o valor que esta na barra de rolagem. O valor é dado em Decibéis.

Agora vamos manipular as propriedades do Local Storage, mas para isto precisamos entender como ele funciona. Ele basicamente é um recurso de chave valor, onde você define o nome de uma chave e em seguida um valor, para recuperar determinado valor, basta informar o nome da chave, veja um exemplo abaixo.

ChaveeValor
Chave1100
Chave2volume
Chave35000
chave4vitoria

Para definir um valor, usamos o set e para recuperar usamos o get.

Agora que entendemos como isto funciona, dentro do Every Tick, na propriedade Set Item do Local Storage, defina a chave como volume e o valor informe o nome de nossa variável.

Chave volume e valor, valor da variável
Chave volume e valor, valor da variável

 

Se você seguiu todos os procedimentos explicados anteriormente, temos no Every Tick as informações apresentadas na imagem abaixo.

Ações do evento Every Tick para o Event Sheet 1
Ações do evento Every Tick para o Event Sheet 1

Se você testar seu jogo agora, poderá ver que já é possível notar que o volume esta sendo alterado, agora o que nos resta é chamar o layout dois e recuperar este valor lá.

Adicione um novo evento para o btnIniciar para o evento  On clicked que ocorre quando o botão foi clicado. Adicione agora uma nova ação que chame o layout dois.

Nossos eventos no Event Sheet1 esta finalizado.

Event Sheet 1 finalizado
Event Sheet 1 finalizado

 

No Layout dois, foi criada uma cena para dar maior realismo ao som, como mostra a imagem a seguir.

Cenário jogo de plataforma para Event sheet 2 e Layout 2
Cenário jogo de plataforma para Event sheet 2 e Layout 2

Agora no Event Sheet no layout dois, crie as ações e eventos conforme mostra a imagem a seguir.

Evento e ações para Event Sheet 2, Local Storage Set master Volume
Evento e ações para Event Sheet 2, Local Storage Set master Volume

Basicamente quando o layout for carregado, devemos verificar se o item volume existe, se o item existir obtemos o valor através da chave volume e por último, através do evento On item get atribuímos o valor a variável volume criada no Layout 1 em seguida o valor da variável é atribuído a propriedade Set máster volume.

Muito simples, não? Ficamos por aqui, em caso de dúvida deixem nos comentários.

Até a próxima!

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. É CEO do portal SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Deixe um comentário