[RESOLVIDO] Como Suavizar transição de uma Animação pra outra
2 participantes
Página 1 de 1
[RESOLVIDO] Como Suavizar transição de uma Animação pra outra
Boa noite pessoal, seguinte
Estou dando Play() nas Animações do Animator, mas ela muda bruscamente. Tentei sincronizar o tempo para usar o "Has Exit Time", mas as vezes acontece do nada de o jogo rodar mais rápido ou mais lento, daí se eu fizer isso, vai ficar estranho, mesma coisa se eu fosse usar uma Coroutine ou Invoke. Daí quero saber como faz para usar o "Has Exit Time" de uma determinada animação via Script. Tem como?
Obg.
Estou dando Play() nas Animações do Animator, mas ela muda bruscamente. Tentei sincronizar o tempo para usar o "Has Exit Time", mas as vezes acontece do nada de o jogo rodar mais rápido ou mais lento, daí se eu fizer isso, vai ficar estranho, mesma coisa se eu fosse usar uma Coroutine ou Invoke. Daí quero saber como faz para usar o "Has Exit Time" de uma determinada animação via Script. Tem como?
Obg.
WLCS22- MembroAvançado
- PONTOS : 1929
REPUTAÇÃO : 60
Respeito as regras :
Re: [RESOLVIDO] Como Suavizar transição de uma Animação pra outra
Dá uma testada, criei pelo bloco de notas e não testei.
Neste exemplo, a classe "AnimatorStateInfo" é usada para obter informações sobre o estado atual do Animator. O método "IsName" é usado para verificar se a animação atual é a animação específica que você está verificando, e o método "normalizedTime" é usado para verificar se o tempo da animação atual é maior ou igual ao "Has Exit Time" específico.
Você pode adicionar este script a um objeto em seu jogo e preencher os campos "animator" e "animationName" com o componente Animator e o nome da animação correspondente. e "exitTime" com o valor desejado de "Has Exit Time"
- Código:
using UnityEngine;
public class AnimationExitTime : MonoBehaviour
{
public Animator animator;
public string animationName;
public float exitTime;
void Update()
{
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
if(stateInfo.IsName(animationName) && stateInfo.normalizedTime >= exitTime)
{
Debug.Log("Animation has exit time");
}
}
}
Neste exemplo, a classe "AnimatorStateInfo" é usada para obter informações sobre o estado atual do Animator. O método "IsName" é usado para verificar se a animação atual é a animação específica que você está verificando, e o método "normalizedTime" é usado para verificar se o tempo da animação atual é maior ou igual ao "Has Exit Time" específico.
Você pode adicionar este script a um objeto em seu jogo e preencher os campos "animator" e "animationName" com o componente Animator e o nome da animação correspondente. e "exitTime" com o valor desejado de "Has Exit Time"
Magnatah- Instrutor
- PONTOS : 3550
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] Como Suavizar transição de uma Animação pra outra
Obg pela ajuda!
Desculpa, editei a resposta, achei o erro que deu, assim que corrigir volto e falo com vc!
Desculpa, editei a resposta, achei o erro que deu, assim que corrigir volto e falo com vc!
WLCS22- MembroAvançado
- PONTOS : 1929
REPUTAÇÃO : 60
Respeito as regras :
Re: [RESOLVIDO] Como Suavizar transição de uma Animação pra outra
Jesus, home do céu.. funcionou como uma luva! vê só,
Amigo, Editei pra não confundir quem ler:
Testei até não poder mais e vi que o que está acontecendo é que o tempo passado no "exitTime" estava sendo coincidentemente igual ao tempo em que a primeira animação termina e vai automaticamente para a segunda animação lá no Animator. Pois em um dos testes que fiz, tem uma hora que a torre já subiu e os personagens ainda estava com a primeira animação, só passou pra segunda quando lá no animator ele rodou o HasExitTime.. acabei voltando á estaca zero. Tem como dar um comando diretamente pra rodar o HasExitTime interrompendo a Animação atual para a próxima? Era isso que rodei procurando e não achei..
Amigo, Editei pra não confundir quem ler:
Testei até não poder mais e vi que o que está acontecendo é que o tempo passado no "exitTime" estava sendo coincidentemente igual ao tempo em que a primeira animação termina e vai automaticamente para a segunda animação lá no Animator. Pois em um dos testes que fiz, tem uma hora que a torre já subiu e os personagens ainda estava com a primeira animação, só passou pra segunda quando lá no animator ele rodou o HasExitTime.. acabei voltando á estaca zero. Tem como dar um comando diretamente pra rodar o HasExitTime interrompendo a Animação atual para a próxima? Era isso que rodei procurando e não achei..
WLCS22- MembroAvançado
- PONTOS : 1929
REPUTAÇÃO : 60
Respeito as regras :
Re: [RESOLVIDO] Como Suavizar transição de uma Animação pra outra
Gente do céu, eu estava usando o Play() nas Animações pela praticidade e por causa também da organização delas no Animator, mas setando os Parâmetros no Animator deixa a transição suave tranquilo. Vou fazer isso com algumas animações.
WLCS22- MembroAvançado
- PONTOS : 1929
REPUTAÇÃO : 60
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] passar de uma animação para a outra rapidamente pelo animator
» Como faço para apos uma animação acabar, executar outra ação C#
» [RESOLVIDO] COMO ANIMAR SEM PRECISAR DE OUTRA CENA??
» TRANSIÇÃO DE UMA CENA PARA OUTRA [DUVIDA]
» Suavizar animação no Blender
» Como faço para apos uma animação acabar, executar outra ação C#
» [RESOLVIDO] COMO ANIMAR SEM PRECISAR DE OUTRA CENA??
» TRANSIÇÃO DE UMA CENA PARA OUTRA [DUVIDA]
» Suavizar animação no Blender
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos