[[SimpleAudioEngine sharedEngine] playEffect:@"shoot.wav"];
}
O próximo som será executado quando ocorrer a colisão entre meteoro e tiro.
No arquivo Meteor.m adicione o código abaixo no início do método gotShot:
- (void)gotShot
{
// Som ao ser atingido
[[SimpleAudioEngine sharedEngine] playEffect:@"bang.wav"];
//...
}
Para finalizar, adicionaremos um som quando um meteoro atingir o avião. No
arquivo Player.m adicione o código abaixo no início do método explode:
- (void)explode
{
// Som ao explodir
[[SimpleAudioEngine sharedEngine] playEffect:@"over.wav"];
//...
}
Agora o game já executará os sons quando um dos 3 eventos acima (tiro e coli-
sões) acontecerem!
8.2
Cache de sons
Vimos como executar sons utilizando o Cocos2D. Porém, você deve ter reparado em
um problema grave: a primeira vez que um dos sons precisa ser tocado, ele demora
muito. Isso se deve ao fato do framework inicializar o som apenas no momento que
foi necessário. Existe uma estratégia e boa prática para solucionar esse problema, o cache de sons.
Para colocar um som no cache devemos iniciá-lo já no início do game. Cria-
remos então um método com essa responsabilidade
na GameScene.m chamado
preloadCache. Esse método fará o cache dos 3 sons que estamos utilizando até
aqui.
129
8.3. Música de fundo
Casa do Código
- (void)preloadCache
{
// Cache de sons do Jogo
[[SimpleAudioEngine sharedEngine] preloadEffect:@"shoot.wav"];
[[SimpleAudioEngine sharedEngine] preloadEffect:@"bang.wav"];
[[SimpleAudioEngine sharedEngine] preloadEffect:@"over.wav"];
}
Adicione a chamada do método
preloadCache
no construtor da
GameScene.m, na última linha do método:
- (id)init
{
self = [super init];
if (self) {
//...
// Cache de sons do Jogo
[self preloadCache];
}
return self;
}
Rode novamente o projeto e verifique que agora os sons respondem perfeita-
mente ao momento dos tiros e colisões!
8.3
Música de fundo
Agora que já trabalhamos com os sons do game, vamos ver como lidar com a
música do jogo. A música será iniciada quando o jogador entrar na tela de jogo.
Para isso, usaremos a mesma classe SimpleAudioEngine porém com o método
playBackgroundMusic:loop:.
No construtor da GameScene.m adicione a chamada a música.
- (id)init
{
self = [super init];
if (self) {
//...
// Música do Jogo
[[SimpleAudioEngine sharedEngine]
playBackgroundMusic:@"music.wav" loop:YES];
130
Casa do Código
Capítulo 8. Adicionando sons e música
}
return self;
}
Outro método importante é o que para a música. Esse método é chamado
pauseBackgroundMusic. Faremos isso logo após o efeito de explosão entre me-
teoro e avião na classe Player.m:
- (void)explode
{
//...
// Pausa a música de fundo
[[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];
}
Rode o projeto e veja como o som adiciona vida ao jogo. Tiro, colisões e música
devem estar funcionando nesse momento!
8.4
Conclusão
Sons e música são muito importantes para os jogos. Repare nos jogos famosos ou
mesmo os que você mais gosta e repare na trilha sonora. Mesmo os jogos antigos
possuíam sons muito especiais para cada jogo.
É importantíssimo definir uma boa trilha sonora e efeitos para o seu próximo
game!
131
Capítulo 9
Voando com a gravidade!
O mundo dos games foi totalmente revitalizado com os smartphones. Jogos que
até então eram simples e já não atraiam mais tanto a atenção dos jogadores foram
remodelados com as novas possibilidades de experiência que os aparelhos modernos
podem proporcionar.
A maioria dos jogos que fazem sucesso nos celulares hoje faz uso de algum re-
curso do aparelho, como touch screen, arrastando objetos na tela ou utilizando
a gravidade com o acelerômetro, e movimentando os elementos de uma maneira
diferente dos jogos para consoles.
Nesse capítulo trocaremos a movimentação do avião feita por botões pelo con-
trole baseado na movimentação do celular! A experiência será levada a outro nível, não mais sendo um simples jogo com botões, mas sim, utilizando um recurso nativo
do aparelho que faz com que o game tenha uma melhor jogabilidade!
Para este capítulo, para poder rodar o jogo no seu próprio aparelho e testar o
acelerômetro, você precisará ser um Desenvolvedor Apple Registrado. Ao fim do
capítulo, nosso avião poderá percorrer a tela, ficando como na figura a seguir:
9.1. Usando o Acelerômetro
Casa do Código
Figura 9.1: Controle por acelerômetro.
9.1
Usando o Acelerômetro
Vamos iniciar planejando o uso do acelerômetro e sabendo onde queremos chegar.
Nosso objetivo é retirar os botões que movimentam o avião para esquerda e direita.
Sem esses botões, moveremos o avião a partir das coordenadas que o celular captar de movimento no aparelho. Dividiremos esse trabalho em 3 partes principais.
Capturar as coordenadas de movimentação horizontal e vertical do aparelho
Controlar a instabilidade do movimento do avião
Calibrar essas coordenadas para o controle funcionar em posições diferentes
134
Casa do Código
Capítulo 9. Voando com a gravidade!