Entrar
Últimos assuntos
» Preciso de ajudapor AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Qui 18 Abr 2024, 18:28
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
Sistema de Musicas aleatórias
4 participantes
Página 1 de 1
Sistema de Musicas aleatórias
Boa tarde pessoal,
Estou trabalhando em um projeto que possui um sistema de musicas aleatórias ao iniciar o nível.
Este é o código que eu utilizo:
CREATE:
É, eu sei que a está altura do campeonato eu já deveria estar usando switch case mas é um vício que eu carrego dos tempos de VBA...
O sistema está funcionando mas eu sempre gosto de fazer da maneira mais correta possível.
No entanto eu notei que poderei enfrentar certos problemas co esse sistema como:
E se eu usar muitas faixas?
E para parar essa musica que foi selecionada?
Para parar eu estou usando a função sound_stop_all, que também está funcionando bem, mas ainda não é o que eu quero (que é parar somente a musica em execução). Tentei salvar a faixa em uma variável (global.soundtrack) e depois para-la com o sound_stop(global.soundtrack) mas não deu certo. Não sei se foi algum erro meu ou da maneira que eu usei.
Por isso aqui estão minhas dúvidas de maneira direta e resumida:
Quanto ao sistema: Tem maneira melhor (aparte do switch case) ou assim está bom?
Quanto a parar a musica: Tem como descobrir que som está tocando para parar este em especial? Tem como fazer melhor?
Bom por agora é isso, agradeço a atenção desde já pessoal.
Estou trabalhando em um projeto que possui um sistema de musicas aleatórias ao iniciar o nível.
Este é o código que eu utilizo:
CREATE:
- Código:
//Seleção de Musicas
global.musica=choose("a","b","c","d")
if global.musica="a"
{
sound_loop(snd_mission_a)
}
if global.musica="b"
{
sound_loop(snd_mission_b)
}
if global.musica="c"
{
sound_loop(snd_mission_c)
}
if global.musica="d"
{
sound_loop(snd_mission_d)
}
É, eu sei que a está altura do campeonato eu já deveria estar usando switch case mas é um vício que eu carrego dos tempos de VBA...
O sistema está funcionando mas eu sempre gosto de fazer da maneira mais correta possível.
No entanto eu notei que poderei enfrentar certos problemas co esse sistema como:
E se eu usar muitas faixas?
E para parar essa musica que foi selecionada?
Para parar eu estou usando a função sound_stop_all, que também está funcionando bem, mas ainda não é o que eu quero (que é parar somente a musica em execução). Tentei salvar a faixa em uma variável (global.soundtrack) e depois para-la com o sound_stop(global.soundtrack) mas não deu certo. Não sei se foi algum erro meu ou da maneira que eu usei.
Por isso aqui estão minhas dúvidas de maneira direta e resumida:
Quanto ao sistema: Tem maneira melhor (aparte do switch case) ou assim está bom?
Quanto a parar a musica: Tem como descobrir que som está tocando para parar este em especial? Tem como fazer melhor?
Bom por agora é isso, agradeço a atenção desde já pessoal.
Mateus O de Andrade- Games Ranking :
Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Sistema de Musicas aleatórias
Se estiver usando o GM:S, a função sound_(...) ficou obsoleta. E para substituir essa atribuição tem o audio_(...).
Vou dar um exemplo dessa função;
GMS:
GM8:
Vou dar um exemplo dessa função;
GMS:
- Código:
if keyboard_check_pressed(vk_enter)
{
if audio_is_playing(audio)
{
audio_stop_sound(audio)
audio_play_sound(audio2,false)
}
}
GM8:
- Código:
if keyboard_check_pressed(vk_enter)
{
if sound_isplaying(audio)
{
sound_stop(audio)
sound_play(audio1)
}
}
Re: Sistema de Musicas aleatórias
Boa tarde Lighter,
Já pensei nessa função (uso o GM .
Atualmente eu uso 4 músicas para fase, 1 para cada chefe, uma para abertura, 1 para seleção de naves e uma para seleção de atributos e fases. Com 4 níveis é fácil usar 4 if's mas e se eu usar um número de músicas maior, estou pensando não só nesse projeto mas também em futuros trabalhos.
Com sua experiencia e também a dos demais colegas, tem alguma forma mais eficaz?
P.S.: Aquele bonequinho não devia estar li em cima....
Já pensei nessa função (uso o GM .
Atualmente eu uso 4 músicas para fase, 1 para cada chefe, uma para abertura, 1 para seleção de naves e uma para seleção de atributos e fases. Com 4 níveis é fácil usar 4 if's mas e se eu usar um número de músicas maior, estou pensando não só nesse projeto mas também em futuros trabalhos.
Com sua experiencia e também a dos demais colegas, tem alguma forma mais eficaz?
P.S.: Aquele bonequinho não devia estar li em cima....
Mateus O de Andrade- Games Ranking :
Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Sistema de Musicas aleatórias
Olá, para facilitar sua vida, e não precisar de tantos if's. Você pode guardar suas músicas em uma array, e depois executar uma delas aleatoriamente.
exemplo:
exemplo:
- Código:
musicas[0] = sd_1;
musicas[1] = sd_2;
musicas[2] = sd_3;
musicas[3] = sd_4;
sound_play( musicas[irandom_range(0, 3)] );
DieBoy- Data de inscrição : 22/08/2014
Reputação : 49
Número de Mensagens : 91
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Sistema de Musicas aleatórias
Putz cara, nem lembrei dos arrays!! Valeu cara, um problema a menos.
Vou aproveitar a dica para dar uma polida em outros códigos que já estão prontos.
Muito obrigado DieBoy.
Vou aproveitar a dica para dar uma polida em outros códigos que já estão prontos.
Muito obrigado DieBoy.
Mateus O de Andrade- Games Ranking :
Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Sistema de Musicas aleatórias
Seguindo o princípio que o DieBoy citou, você pode aprimorar ainda mais usando ds_list! Usando-a, você tem a vantagem de inserir ou remover as músicas quando quiser e não tem o problema de precisar saber o tamanho total da array (ou quantidade de músicas, como preferir), para tal, faça algo mais ou menos assim:
Primeiro, você declara uma lista:
Desta maneira, ocorre a chance da música repetir. Podemos opcionalmente evitar isso removendo a música selecionada da lista, basta adicionar a seguinte linha de código:
ds_list, bem como outros tipos de lista (stack, queue, priority_queue, maps...) são muito úteis e fáceis de se usar quando se entende por completo o seu funcionamento. Procure saber mais sobre elas e verá como são importantes!
Flws...
Primeiro, você declara uma lista:
- Código:
ListaDeMusicas = ds_list_create();
- Código:
ds_list_add(ListaDeMusicas, musica1);
ds_list_add(ListaDeMusicas, musica2);
ds_list_add(ListaDeMusicas, musica2);
- Código:
Random = irandom(ds_list_size(ListaDeMusicas)); //Num aleatório baseado no tamanho da lista.
Musica = ds_list_find_value(ListaDeMusicas, Random); //Pega a musica da lista.
audio_play_sound(Musica,false); //Reproduz a musica escolhida anteriormente
Desta maneira, ocorre a chance da música repetir. Podemos opcionalmente evitar isso removendo a música selecionada da lista, basta adicionar a seguinte linha de código:
- Código:
ds_list_delete(ListaDeMusicas,Random);
ds_list, bem como outros tipos de lista (stack, queue, priority_queue, maps...) são muito úteis e fáceis de se usar quando se entende por completo o seu funcionamento. Procure saber mais sobre elas e verá como são importantes!
Flws...
Re: Sistema de Musicas aleatórias
Bom dia Willy,
Realmente esse código vai dar uma otimizada no meu trabalho.
Hahahaha o jogo não iria ter a função de inventário mas agora, com essa nova ferramente a minha disposição, me sinto obrigado a implementar novos recurções no meu projeto.
Muito obrigado Willy e DieBoy pelas dicas.
P.S.: Cara nunca falei nada, mas não sei por que me bate uma SAUDADE do Ragnarok quando eu vejo essa sua imagem Willy
Realmente esse código vai dar uma otimizada no meu trabalho.
Hahahaha o jogo não iria ter a função de inventário mas agora, com essa nova ferramente a minha disposição, me sinto obrigado a implementar novos recurções no meu projeto.
Muito obrigado Willy e DieBoy pelas dicas.
P.S.: Cara nunca falei nada, mas não sei por que me bate uma SAUDADE do Ragnarok quando eu vejo essa sua imagem Willy
Mateus O de Andrade- Games Ranking :
Data de inscrição : 25/03/2014
Reputação : 37
Número de Mensagens : 410
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|