Pular para o conteúdo
Início » Gamedev » Tocando músicas e efeitos sonoros no XNA 3.0

Tocando músicas e efeitos sonoros no XNA 3.0

Google News

Uma das grandes adições do XNA 3.0 foi a possibilidade de se tocar músicas e outros efeitos sonoros sem a necessidade de utilizar o XACT (a ferramenta de autoria de som que acompanha o Game Studio).

Assim, agora é possível tratar os efeitos sonoros da mesma forma que uma textura ou um modelo 3D, simplesmente carregando o arquivo através de Content.Load. Este novo sistema é interessante porque permite fazer várias coisas com as músicas, inclusive tocar arquivos da biblioteca do usuário. Os formatos suportados são mp3 e wma (para músicas) e wave (para efeitos sonoros).

Neste pequeno tutorial eu vou mostrar como carregar e tocar músicas e efeitos sonoros nos jogos.

Para começar, crie um novo Windows Game. Depois vamos criar os atributos que irão guardar as instâncias das músicas. Nesta versão existem basicamente duas classes para trabalhar com sons, Song (canção) e SoundEffect (efeito sonoro).

A primeira classe serve para tocar as músicas do jogo. Apenas uma de cada vez pode ser executada (quando uma nova começa a tocar, a anterior pára) e é possível criar uma fila de músicas, em uma espécie de play list. A outra classe permite tocar efeitos sonoros, estes sim podem ter várias instâncias em execução ao mesmo tempo.

Para esta demonstração vamos criar uma instância de cada classe:

Song musica;
SoundEffect efeitoSonoro;

Feito isso, carregamos as músicas dentro do método LoadContent da mesma forma que faríamos com uma textura, por exemplo. Só não esqueça de adicionar também os arquivos de som ao projeto, na subpasta Content (clique com o botão direito nesta subpasta e vá em Add->Existing Item).

musica = Content.Load("DrumLoop");
efeitoSonoro = Content.Load("Boing1");

Neste mesmo método já é possível colocar a música que foi carregada para tocar. Para fazer isso, utiliza-se o método Play da classe MediaPlayer. Observe que este método aceita tanto uma música (que começa a ser tocada imediatamente) quanto uma coleção de músicas (que ficam enfileiradas para serem tocadas uma após a outra).

MediaPlayer.Play(musica);

A classe MediaPlayer oferece alguns métodos e propriedades interessantes para lidar com as músicas, entre eles IsRepeating (para controlar a repetição), Volume (para aumentar ou diminuir o volume), e Play/StopPause/Resume (para controlar a execução do arquivo). Para exemplificar podemos colocar a música para repetir:

MediaPlayer.IsRepeating = true;

Para tocar um efeito sonoro o processo é ainda mais simples, basta chamar seu método Play diretamente, sem necessidade do MediaPlayer. Vamos fazer então que o efeito sonoro seja tocado sempre que o usuário pressionar a barra de espaço. Para isso, adicione o seguinte código no método Update do jogo. Note que o efeito sonoro termina sua execução automáticamente quando chega ao fim do arquivo e várias cópias de um mesmo efeito podem ser tocadas ao mesmo tempo (ou várias instâncias de efeitos distintos).

if (Keyboard.GetState().IsKeyDown(Keys.Space))
{
    efeitoSonoro.Play();
}

Basicamente é isto. Com este exemplo simples fica demonstrado como trabalhar com músicas e efeitos sonoros no XNA 3.0 ficou bem mais simples. O projeto com o código-fonte e as músicas usadas neste exemplo está disponível para download aqui.

3 comentários em “Tocando músicas e efeitos sonoros no XNA 3.0”

  1. Adorei este artigo tambem.
    Nao sei se vc viu um outro comentario meu sobre invasores do espaço.
    Meus parabens aquele artigo ficou tao bom que daria ate um livro, eu compraria.
    gostaria da sua permissao para criar no word um tutorial, acrescentando figuras, e outras coisas.
    Claro que nao quero me apossar do seu trabalho, e no nome do autor vai o seu ,pois vc quem criou, eu apenas citaria meu nome como contribuicao de revisao.
    E com sua permissao gostaria de usar este material em minhas aulas.
    te entregaria o original do word e nos poderiamos publicar na internet o tutorial free como um ebook.
    o que vc acha????????

    entre em contato. meu email e hotmail — [email protected]

    Abraços Pavao

  2. Oi, que bom que você gostou do material. Pode usá-lo em suas aulas e montar um tutorial no word à vontade. Só por curiosidade, onde você dá aulas e pra que tipo de curso?

    Qualquer coisa, pode entrar em contato comigo no email: [email protected].

    Abraços.

  3. cara vc salvo minha noite eu estava desde meia noite ate agora 6 da mnhã tentado isso i so o seu tutorial me ajudo hehe vlw mano ti amo! o/ "sem viadagem" kkkkkk

Não é possível comentar.