Destruir uma animação.
4 participantes
Página 1 de 1
Destruir uma animação.
boa noite, sou novo aqui no fórum.Eu preciso de uma ajudinha aqui, se possível responder agradeço.Eu tenho um sprite com 5 animações.Ao clicar em cima do meu objeto, ele muda pra próxima animação, são 5 como eu disse. é possível fazer com que depois da última animação(5) o objeto seja destruído automaticamente com apenas um script?
vitor emanuel- Iniciante
- PONTOS : 1898
REPUTAÇÃO : 0
Respeito as regras :
Re: Destruir uma animação.
Sim, na verdade é muito simples.
Primeiro coloque o seguinte script no objeto que contém as animações:
Agora no animation no último frame da animação, clique com o lado direito do mouse acima da linha do tempo e vá na opção Event Key para criar um evento nesse frame, ou seja, disparar uma ação neste momento.
Selecione o script DestroyObject e o método CallDestruction, então quando chegar no frame dessa animação, o objeto será destruído.
Primeiro coloque o seguinte script no objeto que contém as animações:
- Código:
using UnityEngine;
public class DestroyObject : MonoBehaviour{
public void CallDestruction(){
Destroy(this.gameObject);
}
}
Agora no animation no último frame da animação, clique com o lado direito do mouse acima da linha do tempo e vá na opção Event Key para criar um evento nesse frame, ou seja, disparar uma ação neste momento.
Selecione o script DestroyObject e o método CallDestruction, então quando chegar no frame dessa animação, o objeto será destruído.
Re: Destruir uma animação.
pra simplificar vc pode destruir qualquer objeto em cena, seja ele um objeto animado ou não com o comando Destroy(gameObject); porém você deve montar o código especificando o momento que você deseja destruir, usando Time.deltaTime, de preferencia use um float na variavel. na documentação da unity eles explicam bem sobre isso - https://docs.unity3d.com/ScriptReference/Object.Destroy.html
Boa sorte
Boa sorte
ericssv- Iniciante
- PONTOS : 1980
REPUTAÇÃO : 0
Respeito as regras :
Re: Destruir uma animação.
Toda animações tem um tempo de duração. Se é para destruir o objeto após o último frame, é possivel fazer isso assim que o tempo da animação acaba:
- Código:
private Animator m_Animator;
void Start () {
m_Animator = GetComponent<Animator>();
var duracaoAnimacao = m_Animator.GetCurrentAnimatorStateInfo(0).length; //Duração da animação
Destroy(this.gameObject, duracaoAnimacao); //Destroi objeto após animação
}
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Destruir uma animação.
meu deus.muito obrigado de coração mesmo.passei o final de semana quebrando cabeça com isso, me sinto até um idiota depois dessa simples resposta.Nem o pessoal do fórum da unity souberam me ajudar.muito obrigadoMayLeone escreveu:Sim, na verdade é muito simples.
Primeiro coloque o seguinte script no objeto que contém as animações:
- Código:
using UnityEngine;
public class DestroyObject : MonoBehaviour{
public void CallDestruction(){
Destroy(this.gameObject);
}
}
Agora no animation no último frame da animação, clique com o lado direito do mouse acima da linha do tempo e vá na opção Event Key para criar um evento nesse frame, ou seja, disparar uma ação neste momento.
Selecione o script DestroyObject e o método CallDestruction, então quando chegar no frame dessa animação, o objeto será destruído.
vitor emanuel- Iniciante
- PONTOS : 1898
REPUTAÇÃO : 0
Respeito as regras :
Re: Destruir uma animação.
vitor emanuel escreveu:meu deus.muito obrigado de coração mesmo.passei o final de semana quebrando cabeça com isso, me sinto até um idiota depois dessa simples resposta.Nem o pessoal do fórum da unity souberam me ajudar.muito obrigadoMayLeone escreveu:Sim, na verdade é muito simples.
Primeiro coloque o seguinte script no objeto que contém as animações:
- Código:
using UnityEngine;
public class DestroyObject : MonoBehaviour{
public void CallDestruction(){
Destroy(this.gameObject);
}
}
Agora no animation no último frame da animação, clique com o lado direito do mouse acima da linha do tempo e vá na opção Event Key para criar um evento nesse frame, ou seja, disparar uma ação neste momento.
Selecione o script DestroyObject e o método CallDestruction, então quando chegar no frame dessa animação, o objeto será destruído.
a Unity tem muita função que, quando vc descobre, resolve um problemão daqueles que te fez quebrar a cabeça um longo tempo escrevendo linhas e linhas de código e não chegar a lugar nenhum rsrs..
o negócio é ir fuçando e descobrindo como funciona, ou ir pesquisando até encontrar em algum lugar na internet.
que bom que resolveu! ^ ^
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Re: Destruir uma animação.
então, quando eu destruo meu objeto aparece esse erro "MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.Flávio escreveu:vitor emanuel escreveu:meu deus.muito obrigado de coração mesmo.passei o final de semana quebrando cabeça com isso, me sinto até um idiota depois dessa simples resposta.Nem o pessoal do fórum da unity souberam me ajudar.muito obrigadoMayLeone escreveu:Sim, na verdade é muito simples.
Primeiro coloque o seguinte script no objeto que contém as animações:
- Código:
using UnityEngine;
public class DestroyObject : MonoBehaviour{
public void CallDestruction(){
Destroy(this.gameObject);
}
}
Agora no animation no último frame da animação, clique com o lado direito do mouse acima da linha do tempo e vá na opção Event Key para criar um evento nesse frame, ou seja, disparar uma ação neste momento.
Selecione o script DestroyObject e o método CallDestruction, então quando chegar no frame dessa animação, o objeto será destruído.
a Unity tem muita função que, quando vc descobre, resolve um problemão daqueles que te fez quebrar a cabeça um longo tempo escrevendo linhas e linhas de código e não chegar a lugar nenhum rsrs..
o negócio é ir fuçando e descobrindo como funciona, ou ir pesquisando até encontrar em algum lugar na internet.
que bom que resolveu! ^ ^
Your script should either check if it is null or you should not destroy the object." "Seu script deve verificar se ele é nulo ou você não deve destruir o objeto." como verificar?
vitor emanuel- Iniciante
- PONTOS : 1898
REPUTAÇÃO : 0
Respeito as regras :
Re: Destruir uma animação.
é porque algum outro script ainda está tentando acessar esse objeto mesmo depois que vc o destruiu.
aí vc tem que ver qual código está tentando acessar o objeto e escrever o seguinte:
aí vc tem que ver qual código está tentando acessar o objeto e escrever o seguinte:
- Código:
if (objeto != null) {
// Acessa o objeto
}
Flávio- MembroAvançado
- PONTOS : 2830
REPUTAÇÃO : 29
Áreas de atuação : Aprendizagem em:
Programação C#;
Pixelart
Respeito as regras :
Tópicos semelhantes
» Destruir objeto depois da animação
» Destruir um Objeto após terminar a Animação
» [DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
» Gostaria de fazer a animação do arco seguir animação do personagem
» Animação não reproduz e só fica parado em uma animação
» Destruir um Objeto após terminar a Animação
» [DUVIDA] Como destruir um GameObject (cubo etc...) sem destruir seus "afilhados"
» Gostaria de fazer a animação do arco seguir animação do personagem
» Animação não reproduz e só fica parado em uma animação
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos