Som antes do Destroy(GameObject)
2 participantes
Página 1 de 1
Som antes do Destroy(GameObject)
Boa tarde! Estou com um problema que é o seguinte: Eu preciso que toque um som de morte de inimigos no meu jogo, porém, o mesmo está com um problema que é: O GameObject está sendo destruido antes do som tocar. Abaixo está o meu código:
Minha ideia era colocar o WaitForSeconds(), porém, não posso trocar o void das duas funções existentes. Alguém saberia como me ajudar?
- Código:
public void DarDano(float qnt) {
saude -= qnt;
barraSaude.fillAmount = saude/saudeInicial;
if (saude <= 0 && !estaMorto) {
if (!inimigosMorremJuntos) {
Morre();
}
}
}
void Morre() {
estaMorto = true;
inimigosMorremJuntos = true;
EstatisticasJogador.Dinheiro += worth;
GameObject efeito = (GameObject)Instantiate(efeitoMorte, transform.position, Quaternion.identity);
Destroy(efeito, 5f);
ondaInimigos.inimigosVivos--;
//Delay aqui para tocar som
http://audioSource.Play();
Destroy(gameObject);
}
Minha ideia era colocar o WaitForSeconds(), porém, não posso trocar o void das duas funções existentes. Alguém saberia como me ajudar?
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Re: Som antes do Destroy(GameObject)
Eu não entendi muito bem a sua dúvida, se vc quer que um som toque quando o objeto é destruído, basta usar o OnDestroy e chame a função PlayClipAtPoint, que vai instanciar um elemento de áudio na tela e irá se destruir quando o áudio acabar:
Para anexar um áudio ao objeto, deixa na classe do mesmo uma variável pública do tipo AudioClip e anexe o clip através do inspetor:
Referencia do PlayClipAtPoint: https://docs.unity3d.com/ScriptReference/AudioSource.PlayClipAtPoint.html?_ga=2.233677278.1188236879.1604289434-516241012.1603347089
- Código:
private void OnDestroy (){
AudioSource.PlayClipAtPoint(_clip, Camera.main.transform.position);
}
Para anexar um áudio ao objeto, deixa na classe do mesmo uma variável pública do tipo AudioClip e anexe o clip através do inspetor:
- Código:
public AudioClip _clip;
Referencia do PlayClipAtPoint: https://docs.unity3d.com/ScriptReference/AudioSource.PlayClipAtPoint.html?_ga=2.233677278.1188236879.1604289434-516241012.1603347089
Re: Som antes do Destroy(GameObject)
MayLeone escreveu:Eu não entendi muito bem a sua dúvida, se vc quer que um som toque quando o objeto é destruído, basta usar o OnDestroy e chame a função PlayClipAtPoint, que vai instanciar um elemento de áudio na tela e irá se destruir quando o áudio acabar:
- Código:
private void OnDestroy (){
AudioSource.PlayClipAtPoint(_clip, Camera.main.transform.position);
}
Para anexar um áudio ao objeto, deixa na classe do mesmo uma variável pública do tipo AudioClip e anexe o clip através do inspetor:
- Código:
public AudioClip _clip;
Referencia do PlayClipAtPoint: https://docs.unity3d.com/ScriptReference/AudioSource.PlayClipAtPoint.html?_ga=2.233677278.1188236879.1604289434-516241012.1603347089
Era isso mesmo, havia me esquecido totalmente da existência da função OnDestroy(). Muito obrigado pela ajuda!
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Re: Som antes do Destroy(GameObject)
MayLeone escreveu:Eu não entendi muito bem a sua dúvida, se vc quer que um som toque quando o objeto é destruído, basta usar o OnDestroy e chame a função PlayClipAtPoint, que vai instanciar um elemento de áudio na tela e irá se destruir quando o áudio acabar:
- Código:
private void OnDestroy (){
AudioSource.PlayClipAtPoint(_clip, Camera.main.transform.position);
}
Para anexar um áudio ao objeto, deixa na classe do mesmo uma variável pública do tipo AudioClip e anexe o clip através do inspetor:
- Código:
public AudioClip _clip;
Referencia do PlayClipAtPoint: https://docs.unity3d.com/ScriptReference/AudioSource.PlayClipAtPoint.html?_ga=2.233677278.1188236879.1604289434-516241012.1603347089
A única duvida que me restou é se eu tenho como mudar o volume do AudioClip, pois nunca utilizei do mesmo, sempre utilizei o AudioSource para minhas tracks de áudio.
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Re: Som antes do Destroy(GameObject)
Sim, é o último argumento da função.
Por padrão ele já vem com volume em 100% (1F), mas vc pode diminuir, por exemplo, pela metade:
Por padrão ele já vem com volume em 100% (1F), mas vc pode diminuir, por exemplo, pela metade:
- Código:
private void OnDestroy (){
AudioSource.PlayClipAtPoint(_clip, Camera.main.transform.position, 0.5F);
}
Re: Som antes do Destroy(GameObject)
Testei este código e estou tendo os seguintes problemas:MayLeone escreveu:Sim, é o último argumento da função.
Por padrão ele já vem com volume em 100% (1F), mas vc pode diminuir, por exemplo, pela metade:
- Código:
private void OnDestroy (){
AudioSource.PlayClipAtPoint(_clip, Camera.main.transform.position, 0.5F);
}
NullReferenceException: Object reference not set to an instance of an object
Inimigo.OnDestroy () (at Assets/Scripts/Inimigo.cs:47)
Some objects were not cleaned up when closing the scene. (Did you spawn new GameObjects from OnDestroy?)
The following scene GameObjects were found:
One shot audio
Meu código que está dando erro é o seguinte:
- Código:
private void OnDestroy() {
AudioSource.PlayClipAtPoint(audioClip, Camera.main.transform.position, 0.5f);
}
Está gerando esses dois erros quando eu saio da scene sem ter destruído nenhum objeto. Por exemplo: entro no nível e ja saio para o Menu. Como não foi destruído nenhum dos inimigos, ele me da esse erro.
Saberia como me ajudar a resolver esse problema?
Ricardito- Membro
- PONTOS : 1729
REPUTAÇÃO : 2
Respeito as regras :
Tópicos semelhantes
» Criar tutorial antes do jogo
» [TUTORIAL] Comando Destroy ( destruir )
» [RESOLVIDO] Destroy object quando toca no chao
» [Teste]Testem Meu Jogo - Geometry Destroy Beta
» Testar posição antes de instanciar.
» [TUTORIAL] Comando Destroy ( destruir )
» [RESOLVIDO] Destroy object quando toca no chao
» [Teste]Testem Meu Jogo - Geometry Destroy Beta
» Testar posição antes de instanciar.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos