Unity - Introdução ao Áudio

Há uma razão para os jogos enfatizarem o áudio; é crucial agregar valor estético ao jogo. Desde o primeiroPong, pode-se ouvir bipes e boops da bola batendo nas pás alternadamente. Na época, era uma amostra de onda quadrada curta muito simples, mas o que mais você poderia querer do avô de todos os videogames?

Na vida real, muitas coisas afetam a maneira como você percebe o som; a velocidade do objeto, em que tipo de cenário ele se encontra e de qual direção está vindo.

Existem vários fatores que podem criar carga desnecessária em nosso motor. Em vez disso, tentamos criar uma ideia de como nosso som funcionaria em nosso jogo, e construímos em torno disso. Isso se torna especialmente proeminente em jogos 3D, onde existem 3 eixos para lidar.

No Unity, temos componentes dedicados para percepção e reprodução de áudio. Esses componentes trabalham juntos para criar um sistema de som crível e natural para o jogo.

O Unity nos fornece uma série de ferramentas e efeitos úteis, como reverberação, efeito Doppler, mixagem e efeitos em tempo real, etc. Aprenderemos sobre isso em nossos capítulos subsequentes.

Os Componentes de Áudio

Nesta seção, aprenderemos sobre os 3 componentes principais relacionados ao áudio no Unity.

AudioSource

O componente AudioSource é o componente principal que você anexará a um GameObject para fazê-lo reproduzir som. Vai reproduzir umAudioClip quando acionado através do mixer, por meio de código ou por padrão, quando ele desperta.

Um AudioClip é simplesmente um arquivo de som que é carregado em um AudioSource. Pode ser qualquer arquivo de áudio padrão, como .mp3, .wav e assim por diante. Um AudioClip também é um componente dentro de si mesmo.

AudioListener

Um AudioListener é o componente que listensa todo o áudio em execução na cena e transfere-o para os alto-falantes do computador. Atua como oearsdo jogo. Todo o áudio que você ouve está em perspectiva do posicionamento deste AudioListener. Apenas um AudioListener deve estar em uma cena para que funcione corretamente. Por padrão, a câmera principal tem o Listener conectado a ela. O Listener não tem nenhuma propriedade exposta com a qual o designer queira se preocupar.

Filtros de Áudio

A saída de uma AudioSource ou entrada de um AudioListener pode ser modificada com a ajuda de Filtros de Áudio. Esses são componentes específicos que podem alterar a reverberação, o chorus, a filtragem e assim por diante. Cada filtro específico vem como seu próprio componente com valores expostos para ajustar como soa.

Tocando um Som

Vamos tentar fazer um botão que emita um som quando é clicado. Para começar, vamosCreate um sprite de círculo e torná-lo vermelho.

Agora, vamos anexar um Audio Source para este sprite.

Para que o objeto toque um som, temos que atribuir um. Vamos usar esse efeito de som para nosso propósito.

http://www.orangefreesounds.com/ding-sfx/

Baixe o efeito de som e arraste-o para os Ativos.

Quando o Unity importa este ativo como um arquivo de som, ele é automaticamente convertido em um AudioClip. Portanto, você pode arrastar este clipe de som dos Ativos diretamente para o slot de clipe de áudio na fonte de áudio do nosso sprite.

Depois de arrastar o clipe de som dos Ativos diretamente para o slot de clipe de áudio na fonte de áudio do nosso sprite, lembre-se de desmarcar “Play on Awake” nas propriedades da fonte de áudio; não fazer isso fará o som tocar no momento em que o jogo começar.

Agora, vamos pular para o nosso código. Crie um novo script chamado “BellSound” e abra-o.

Como nossa fonte de áudio é controlada por meio de código, queremos primeiro obter uma referência a ela. Usaremos o método GetComponent como antes.

public class BellSound : MonoBehaviour {
   AudioSource mySource;
   // Use this for initialization
   void Start () {
      mySource = GetComponent<AudioSource>();
}

Agora, vamos configurar o método para detectar o objeto que está sendo clicado. MonoBehaviour nos dá apenas o método de que precisamos para isso, chamado OnMouseDown. O método é chamado sempre que o mouse clica no intervalo de umcollider desse gameObject.

Como ainda não anexamos um colisor ao nosso botão, vamos fazê-lo agora.

Não precisaremos de um corpo rígido para este; nem precisamos acessar este colisor por código. Só precisa estar lá para que o método funcione.

Vamos testar o método e ver se está funcionando. Escreva o código a seguir em seu script e anexe-o ao botão.

void OnMouseDown() {
   Debug.Log(“Clicked!”);
}

Depois de salvar o script e anexá-lo, comece o jogo. Clicar no botão deve gerar uma mensagem no console.

Agora você está a um passo de tocar o som. Tudo que você precisa fazer agora é ligar para oPlay método na instância Audio Source.

void OnMouseDown() {
   mySource.Play();
}

Salve seu script e execute-o no jogo. Clique no botão e você ouvirá o som!

Note- Considere criar um botão que aumenta de tom toda vez que você clica nele. UsarmySource.pitch e um contador para ver se você consegue descobrir.)