[RESOLVIDO] Várias faixas de música
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 2
Página 1 de 2 • 1, 2
[RESOLVIDO] Várias faixas de música
Olá, estou a criar um jogo e queria que o meu objeto tocasse várias faixas de audio, de forma random e que fosse mudando de faixa de 3 em 3 segundos
é possível ?
eu usei este código por base mas não está a dar
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField] private AudioClip musica1;
[SerializeField] private AudioClip musica2;
[SerializeField] private AudioClip musica3;
[SerializeField] private AudioClip musica4;
[SerializeField] private AudioClip musica5;
[SerializeField] private AudioClip musica6;
private object AudioPlayer;
public void TocaMusica1()
{
AudioPlayer.instance.TocarBGM(musica1);
}
public void TocaMusica2()
{
AudioPlayer.instance.TocarBGM(musica2);
}
public void PararMusica()
{
AudioPlayer.instance.PararBGM();
}
public void TocaEfeito1()
{
AudioPlayer.instance.TocarSFX(musica3);
}
public void TocaEfeito2()
{
AudioPlayer.instance.TocarSFX(musica4);
}
public void TocaEfeito1()
{
AudioPlayer.instance.TocarSFX(musica5);
}
public void TocaEfeito2()
{
AudioPlayer.instance.TocarSFX(musica6);
}
public void PararEfeito()
{
AudioPlayer.instance.PararSFX();
}
}
é possível ?
eu usei este código por base mas não está a dar
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField] private AudioClip musica1;
[SerializeField] private AudioClip musica2;
[SerializeField] private AudioClip musica3;
[SerializeField] private AudioClip musica4;
[SerializeField] private AudioClip musica5;
[SerializeField] private AudioClip musica6;
private object AudioPlayer;
public void TocaMusica1()
{
AudioPlayer.instance.TocarBGM(musica1);
}
public void TocaMusica2()
{
AudioPlayer.instance.TocarBGM(musica2);
}
public void PararMusica()
{
AudioPlayer.instance.PararBGM();
}
public void TocaEfeito1()
{
AudioPlayer.instance.TocarSFX(musica3);
}
public void TocaEfeito2()
{
AudioPlayer.instance.TocarSFX(musica4);
}
public void TocaEfeito1()
{
AudioPlayer.instance.TocarSFX(musica5);
}
public void TocaEfeito2()
{
AudioPlayer.instance.TocarSFX(musica6);
}
public void PararEfeito()
{
AudioPlayer.instance.PararSFX();
}
}
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Pra que tanta void? É quase a mesma coisa que respondi anteriormente das cores do sprite, porém com audios. Olhe:
Primeiro de tudo adicione ao objeto que reproduzirá o audio, o Component Audio Source, esse é o component responsável para reproduzir som.
Depois desative o Play On Awake, para ele nao começar reproduzindo
Pronto agora mude esse seu script por este:
E depos é só voce colocar as musicas na array.
Primeiro de tudo adicione ao objeto que reproduzirá o audio, o Component Audio Source, esse é o component responsável para reproduzir som.
Depois desative o Play On Awake, para ele nao começar reproduzindo
Pronto agora mude esse seu script por este:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6];
[SerializeField]private AudioSource audioSource;
[SerializeField]private bool tocarMusica = true;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if(tocarMusica)
{
musicaSorteada = Random.Range(0, musics.Length);
audioSource.clip = musics[musicaSorteada];
audioSource.Play();
tocarMusica = false;
StartCoroutine("WaitToPlayNewMusic");
}
}
IEnumerator WaitToPlayNewMusic()
{
yield return new WaitForSeconds(3f);
tocarMusica = true;
}
}
E depos é só voce colocar as musicas na array.
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
quando tento colocar o script, aparece isto :
Can't add script component 'sound' because the script class cannot be found. Make sure that there are no compile errors and that the file name and class name match.
Can't add script component 'sound' because the script class cannot be found. Make sure that there are no compile errors and that the file name and class name match.
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
dragongirl escreveu:quando tento colocar o script, aparece isto :
Can't add script component 'sound' because the script class cannot be found. Make sure that there are no compile errors and that the file name and class name match.
Qual é o nome do seu script? A classe nao corresponde ao nome.
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
já consegui resolver essa parte muito obrigada
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
só que não deixa colocar as músicas que estão nos assets
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
dragongirl escreveu:só que não deixa colocar as músicas que estão nos assets
Como Assim? Nao deixa colocar as musicas que estão dentro da pasta assets?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Pokedlg escreveu:dragongirl escreveu:só que não deixa colocar as músicas que estão nos assets
Como Assim? Nao deixa colocar as musicas que estão dentro da pasta assets?
Nao funciona Assim?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Boa tarde não, como se põe ver pelo video não aceita
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
dragongirl escreveu:Boa tarde não, como se pode ver, não consigo colocar na hierarquia e não aceita diretamente da Asset store
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Ah muito obrigada mesmo, estou no inicio do meu unity e a aprender a mexer com scripts. Ainda não entendo bem mas muito obrigada.
Porém agora não posso usar o mesmo script porque o AudioClip não deixa colocar o play. (_audio[1].Play()
Poderiam me ajudar por favor?
Porém agora não posso usar o mesmo script porque o AudioClip não deixa colocar o play. (_audio[1].Play()
Poderiam me ajudar por favor?
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Voce quer que a musica seja aleatória não é?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
sim, que quando passar por aquele local a musica aleatoriamente mude
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Então voce nao precisa do (_audio[1].Play()). Na array criada voce apenas precisa colocar os audios que voce quer usar e no script ele já defini um valor aleatório de acordo com a posição do audio na array.
Irei explicar o script:
Aqui eu só fiz a musica sendo sorteada de acordo com o que voce pediu. Porém se voce quer fazer quando chega a certo lugar. O Script irá ser diferente, voce quer ajuda?
Irei explicar o script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6]; //Array criada com espaço para 6 AudiClips
[SerializeField]private AudioSource audioSource; //Serve para tocar o audio
[SerializeField]private bool tocarMusica = true; // Uma variavel do tipo bool (Verdadeiro ou Falso)
void Start()
{
audioSource = GetComponent<AudioSource>(); //Quando apertar Start o Audio Source vai pegar o Audio source presente no Objeto que o Script está
}
void Update()
{
if(tocarMusica) //Se tocar musica = true
{
var musicaSorteada = Random.Range(0, musics.Length); //Irá sortear um numero de acordo com o tamanho da Array (6)
audioSource.clip = musics[musicaSorteada]; // O audio clip do Audio Source será igual ao valor sorteado.
audioSource.Play(); //E então irá começar a música
tocarMusica = false; //TocarMusica se tornará false
StartCoroutine("WaitToPlayNewMusic"); //Chamara uma rotina
}
}
IEnumerator WaitToPlayNewMusic() //Rotina Esperar para Tocar Nova Musica
{
yield return new WaitForSeconds(3f); //Retornará uma espera de 3 Segundos
tocarMusica = true; //Tocar musica se tornara verdadeiro novamente, consequentemente irá gerar e tocar uma musica aleatória novamente
}
}
Aqui eu só fiz a musica sendo sorteada de acordo com o que voce pediu. Porém se voce quer fazer quando chega a certo lugar. O Script irá ser diferente, voce quer ajuda?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Já funciona corretamente, mas a música começa logo e eu queria que começasse somente quando intersecta esse Trigger, é possível?
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
É sim. O trigger que voce quer acessar é o mesmo do Sprite?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
sim éPokedlg escreveu:É sim. O trigger que voce quer acessar é o mesmo do Sprite?
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
MUDE PARA ASSIM ENTAO:
E DEPOIS NO SCRIPT DO SPRITE, COLOQUE ASSIM:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6];
[SerializeField]private AudioSource audioSource;
[SerializeField]private bool tocarMusica = false;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if(tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audioSource.clip = musics[musicaSorteada];
audioSource.Play();
tocarMusica = false;
StartCoroutine("WaitToPlayNewMusic");
}
}
IEnumerator WaitToPlayNewMusic()
{
yield return new WaitForSeconds(3f);
tocarMusica = true;
}
}
E DEPOIS NO SCRIPT DO SPRITE, COLOQUE ASSIM:
- Código:
public class Sprite : MonoBehaviour
{
public Material mat;
public bool mudandoDeCor = false;
public sound scriptDoSom; // no inspector, coloque seu script do som aqui
void Start()
{
mat = GetComponent<SpriteRenderer>().material;
}
void Update()
{
if(mudandoDeCor == true)
{
mat.color = Random.ColorHSV(); //Irá gerar uma cor aleatória sem voce escolher
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
scriptDoSom.tocarMusica = true;
mudandoDeCor = true;
}
}
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
mas para acessar a variavel tocarMusica por outro script ela não precisava ser estática?Pokedlg escreveu:MUDE PARA ASSIM ENTAO:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6];
[SerializeField]private AudioSource audioSource;
[SerializeField]private bool tocarMusica = false;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if(tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audioSource.clip = musics[musicaSorteada];
audioSource.Play();
tocarMusica = false;
StartCoroutine("WaitToPlayNewMusic");
}
}
IEnumerator WaitToPlayNewMusic()
{
yield return new WaitForSeconds(3f);
tocarMusica = true;
}
}
E DEPOIS NO SCRIPT DO SPRITE, COLOQUE ASSIM:
- Código:
public class Sprite : MonoBehaviour
{
public Material mat;
public bool mudandoDeCor = false;
public sound scriptDoSom; // no inspector, coloque seu script do som aqui
void Start()
{
mat = GetComponent<SpriteRenderer>().material;
}
void Update()
{
if(mudandoDeCor == true)
{
mat.color = Random.ColorHSV(); //Irá gerar uma cor aleatória sem voce escolher
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
scriptDoSom.tocarMusica = true;
mudandoDeCor = true;
}
}
Re: [RESOLVIDO] Várias faixas de música
Nao se voce colocar ele como publico e aceessar ele no script
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
eu peço imensa desculpa, mas acontece que o Collider foi feito com uma box e coloquei em Triggers, não é um Sprite. erro meu, desculpe.
eu queria que quando a personagem passasse por essa box invisível começasse a dar as musicas mas fora não se ouvisse. posso usar na mesma o script de ?
Basicamente é para fazer o mesmo só que não é num Sprite mas sim num Collider que criei com uma box
eu queria que quando a personagem passasse por essa box invisível começasse a dar as musicas mas fora não se ouvisse. posso usar na mesma o script de ?
Basicamente é para fazer o mesmo só que não é num Sprite mas sim num Collider que criei com uma box
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Sim da pra usar sim. é só colocar assim:
Agora é só colocar o esse script no box invisível
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6];
[SerializeField]private AudioSource audioSource;
[SerializeField]private bool tocarMusica = false;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if(tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audioSource.clip = musics[musicaSorteada];
audioSource.Play();
tocarMusica = false;
StartCoroutine("WaitToPlayNewMusic");
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
tocarMusica = true;
}
}
void OnTriggerExit(Collider other)
{
audioSource.clip = null;
}
IEnumerator WaitToPlayNewMusic()
{
yield return new WaitForSeconds(3f);
tocarMusica = true;
}
}
Agora é só colocar o esse script no box invisível
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Bom dia, obrigada mais uma vez, acontece que continua a dar logo, mesmo não estando a colidir
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Nao desative o objeto, se voce vai fazer algo invisivel, deixe o objeto transparente, pois se voce desativar, ele nao fará nenhuma função, praticamente para de existir.
Confere se voce fez tudo isso nesse objeto invisivel:
Add Box Collider
Ativou o IsTrigger
Add Audio Source
Desativou o Play On Awake
Colocou este ultimo script
Colocou as musicas que deseja na array
Confere se voce fez tudo isso nesse objeto invisivel:
Add Box Collider
Ativou o IsTrigger
Add Audio Source
Desativou o Play On Awake
Colocou este ultimo script
Colocou as musicas que deseja na array
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
sim tenho todos esses passos feitos porém a música permanece a dar logo que clico no play
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
dragongirl escreveu:sim tenho todos esses passos feitos porém a música permanece a dar logo que clico no play
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
dragongirl escreveu:dragongirl escreveu:sim tenho todos esses passos feitos porém a música permanece a dar logo que clico no play
Ué, era para ter dado certo, que estranho, perae vou ver.
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Achei o erro. Quando voce deixa uma variavel publica, ou usa [SerializeField] em uma variavel privada, ela nao irá atualizar de acordo com o script, pois ela pode ser modificada no inspector, o que eu acho uma falha muito grande dos desenvolvedores da Unity.
Enfim, no seu caso, a tocarMusica estava true, e ao mudar para false no script, nao alterou, por ela estar publica([SerializeField]). Para resolver é só deixa-la false.
Clica no quadrado que tá com o . Se desaparecer o quer dizer que está false.
Enfim, no seu caso, a tocarMusica estava true, e ao mudar para false no script, nao alterou, por ela estar publica([SerializeField]). Para resolver é só deixa-la false.
Clica no quadrado que tá com o . Se desaparecer o quer dizer que está false.
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Noutra zona do jogo gostava que começasse a dar só uma música quando o personagem colidisse, poderei usar o mesmo script mas alterando assim? ou será melhor com um Audio Source (se é possível colocar-lhe com o Collider também)
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sound : MonoBehaviour
{
[SerializeField] private AudioClip[] musics = new AudioClip[1];
[SerializeField] private AudioSource audioSource;
[SerializeField] private bool tocarMusica = false;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if (tocarMusica == false)
{
audioSource.Play();
tocarMusica = true;
StartCoroutine("WaitToPlayNewMusic");
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
tocarMusica = false;
}
}
void OnTriggerExit(Collider other)
{
audioSource.clip = null;
}
}
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Nao entendi, voce que aconteça a mesma função em outro objeto colisor?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
sim basicamente, mas em vez de várias faixas, so será uma
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Entao é só deletar a rotina.
Ve se é isso que voce deseja
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6];
[SerializeField]private AudioSource audioSource;
[SerializeField]private bool tocarMusica = false;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if(tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audioSource.clip = musics[musicaSorteada];
audioSource.Play();
tocarMusica = false;
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
tocarMusica = true;
}
}
void OnTriggerExit(Collider other)
{
audioSource.clip = null;
}
}
Ve se é isso que voce deseja
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Mas a musica não dá somente quando o personagem passa la, ela começa a dar logo que se clica no Start do jogo
(e associei ao collider e tirei o play on awake
(e associei ao collider e tirei o play on awake
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Pokedlg escreveu:Achei o erro. Quando voce deixa uma variavel publica, ou usa [SerializeField] em uma variavel privada, ela nao irá atualizar de acordo com o script, pois ela pode ser modificada no inspector, o que eu acho uma falha muito grande dos desenvolvedores da Unity.
Enfim, no seu caso, a tocarMusica estava true, e ao mudar para false no script, nao alterou, por ela estar publica([SerializeField]). Para resolver é só deixa-la false.
Clica no quadrado que tá com o . Se desaparecer o quer dizer que está false.
Voce tentou isso?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Sim e nem assim a música para
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Nao entendo, eu fiz um código que quando colide com o objeto a musica começa a toca e quando sai da area de colisão a musica se torna Nula, e isso só vai acontecer se a variavel tocarMusica for verdadeira, e quando da Start ela é falsa, então nada disso era para acontecer, somente quando colide que tocarMusica se torna verdadeira .
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class sound : MonoBehaviour
{
[SerializeField]private AudioClip[] musics = new AudioClip[6];
[SerializeField]private AudioSource audioSource;
[SerializeField]private bool tocarMusica = false;
void Start()
{
audioSource = GetComponent<AudioSource>();
}
void Update()
{
if(tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audioSource.clip = musics[musicaSorteada];
audioSource.Play();
tocarMusica = false;
}
}
void OnTriggerEnter(Collider other)
{
if(other.tag == "Player")
{
tocarMusica = true;
}
}
void OnTriggerExit(Collider other)
{
audioSource.clip = null;
tocarMusica = false;
}
}
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Pois é mesmo estranho, não há outra forma de fazer com que a música só toque naquele local. Porque ficava mesmo bem no meu jogo, quando a personagem passasse ali começasse a música.
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Eu fiz o teste aqui na minha Unity e funcionou corretamente. Vou enviar um video
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
A musica que me refiro é a da Lana, ela devia começar só dentro daquela casinha, porém começa logo e nem aparece que está a tocar.
Aqui está o video do meu
Aqui está o video do meu
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Desculpa demorar para responder. Que estranho, vou fazer uns testes aqui e vo ver oque pode estar dando errado. Desculpe, mas esqueci de avisar que para o IsTrgger funcionar o objeto tem que ter um rigdbody, desative o Use Gravity e ative o Is Kinematic.
Outra duvida, voce quer que a partir dali começa a musica ou voce quer que só apenas naquela pequena área toque a musica, e se voce sair voce nao pode mais ouvi-la?
Outra duvida, voce quer que a partir dali começa a musica ou voce quer que só apenas naquela pequena área toque a musica, e se voce sair voce nao pode mais ouvi-la?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Gostava que só desse naquele espaço só, portanto quando saísse não queria mais ouvi-la
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Utilizei a msuica do A-ha como exemplo.
Exemplo 1:
Exemplo 2:
Exemplo 1:
Exemplo 2:
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Como criou o DontdestroyonLoad?
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Usou algum script?
Ou criou um objeto, tirou o Triggers, colocou o rígido body e colocou um AudioSources só?
Ou criou um objeto, tirou o Triggers, colocou o rígido body e colocou um AudioSources só?
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
é só voce escrever DontDestroyOnLoad(Objeto).dragongirl escreveu:Como criou o DontdestroyonLoad?
- Código:
DontDestroyOnLoad(gameObject);
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
dragongirl escreveu:Usou algum script?
Ou criou um objeto, tirou o Triggers, colocou o rígido body e colocou um AudioSources só?
Utilizei aquele que mandei anteriormente
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Mesmo com o script igual, a música começa logo que clico no play e não só na colisão
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Voce poderia mandar uma imagem de onde está o colisor? E voce tem certeza de que nao possui nenhum outro AudioSource em algum outro objeto?
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Consegui resolver, era um erro no script, desculpe mesmo.
Mas agora tentei adaptar ao dos 6 sons (porque esse não parava quando acabasse) a colisão e acontece que usando este script ele não vai alternando a música. Só dá uma.
Mas agora tentei adaptar ao dos 6 sons (porque esse não parava quando acabasse) a colisão e acontece que usando este script ele não vai alternando a música. Só dá uma.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sound : MonoBehaviour
{
public AudioClip[] musics = new AudioClip[6];
public AudioSource audSource;
public bool tocarMusica = false;
void Start()
{
audSource = GetComponent<AudioSource>();
}
void Update()
{
if (tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audSource.clip = musics[musicaSorteada];
audSource.Play();
tocarMusica = false;
StartCoroutine("WaitToPlayNewMusic");
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
tocarMusica = true;
}
}
void OnTriggerExit(Collider other)
{
audSource.clip = null;
}
IEnumerator WaitToPlayNewMusic()
{
yield return new WaitForSeconds(3f);
tocarMusica = false;
}
}
dragongirl- Membro
- PONTOS : 1479
REPUTAÇÃO : 4
Respeito as regras :
Re: [RESOLVIDO] Várias faixas de música
Ah sim, achei o que está causando isso. Quando chama a rotina, voce está retornando tocarMusica como false, olhe tente assim:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Sound : MonoBehaviour
{
public AudioClip[] musics = new AudioClip[6];
public AudioSource audSource;
public bool tocarMusica = false;
void Start()
{
audSource = GetComponent<AudioSource>();
}
void Update()
{
if (tocarMusica == true)
{
var musicaSorteada = Random.Range(0, musics.Length);
audSource.clip = musics[musicaSorteada];
audSource.Play();
tocarMusica = false;
StartCoroutine("WaitToPlayNewMusic");
}
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
tocarMusica = true;
}
}
void OnTriggerExit(Collider other)
{
audSource.clip = null;
}
IEnumerator WaitToPlayNewMusic()
{
yield return new WaitForSeconds(3f);
tocarMusica = true;
}
}
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Página 1 de 2 • 1, 2
Tópicos semelhantes
» [RESOLVIDO]Várias salas, um Host (UNET)
» [RESOLVIDO] Duas ou Varias Lights No Mesmo Lugar
» [RESOLVIDO] musica aleatoria
» Teria Como Fazer Checar Um IF Varias Vesses E O Q Tem Nele Nao? [resolvido]
» [RESOLVIDO] Como criar várias ações (funções) em um único botão ???
» [RESOLVIDO] Duas ou Varias Lights No Mesmo Lugar
» [RESOLVIDO] musica aleatoria
» Teria Como Fazer Checar Um IF Varias Vesses E O Q Tem Nele Nao? [resolvido]
» [RESOLVIDO] Como criar várias ações (funções) em um único botão ???
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos