Animação customizada com "Exit Time"
2 participantes
Página 1 de 1
Animação customizada com "Exit Time"
Olá pessoal,
Eu estou fazendo um projeto (Jogo 2D, Top-Down) onde o meu player pode ser customizado e por isso, não posso fazer as animações pelo próprio Animator padrão da Unity, já que ficaria muito pesado e trabalhoso ter de trabalhar um por um (No caso, eu teria que criar várias animações/Animators). Então para poupar meu trabalho, fiz o seguinte:
[ Obs.: Estas animações são na verdade, sequência de várias Sprites ]
~ Criei um Script responsável por armazenar dados das animações
~ Criei o Script do jogador para que o mesmo pudesse controlar suas animações
Beleza! Mas qual é a dúvida?
No Animator padrão da Unity, temos a opção "Has Exit Time" ao realizar a conexão entre duas animações, o que significa que a animação muda de repente, sem que a animação que já estava rodando possa terminar de ser executada. Mas num "Animator Customizado" eu não sei como posso fazer isso.. Alguma ideia?
Eu estou fazendo um projeto (Jogo 2D, Top-Down) onde o meu player pode ser customizado e por isso, não posso fazer as animações pelo próprio Animator padrão da Unity, já que ficaria muito pesado e trabalhoso ter de trabalhar um por um (No caso, eu teria que criar várias animações/Animators). Então para poupar meu trabalho, fiz o seguinte:
[ Obs.: Estas animações são na verdade, sequência de várias Sprites ]
~ Criei um Script responsável por armazenar dados das animações
- Código:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "Item", menuName = "Player Character")]
public class PlayerThings : ScriptableObject
{
public animator Idle, Walk;
}
[System.Serializable]
public class animator {
[Range(0.01f, 1.5f)]
public float timming = 0.1f;
public Sprite[] sprites;
}
~ Criei o Script do jogador para que o mesmo pudesse controlar suas animações
- Código:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
// Geral
public PlayerThings things;
// Física
private Rigidbody2D rb { get { return GetComponent<Rigidbody2D>(); } set { rb = value; } }
// Animação
bool AnimationRunning = false;
private SpriteRenderer _Render { get { return GetComponent<SpriteRenderer>(); } set { _Render = value; } }
private void Update()
{
Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
PlayAnimation(input != Vector2.zero ? things.Walk : things.Idle);
}
// Roda animações
public void PlayAnimation (animator x) { if (!AnimationRunning) { AnimationRunning = true; StartCoroutine(RunAnimation(x)); } }
private IEnumerator RunAnimation (animator x)
{
Sprite[] animations = x.sprites;
for (int i = 0; i < animations.Length; i++) {
yield return new WaitForSeconds(x.timming);
_Render.sprite = animations[i];
}
AnimationRunning = false;
}
}
Beleza! Mas qual é a dúvida?
No Animator padrão da Unity, temos a opção "Has Exit Time" ao realizar a conexão entre duas animações, o que significa que a animação muda de repente, sem que a animação que já estava rodando possa terminar de ser executada. Mas num "Animator Customizado" eu não sei como posso fazer isso.. Alguma ideia?
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Animação customizada com "Exit Time"
Você pode tentar usar State Machine Behaviours eles já salvaram minha vida muitas vezes e hoje não sei mais viver sem eles kk.
Esse tópico, apesar de antigo, trata de um problema parecido.
Nunca usei pra essa finalidade específica, uso mais pra transição suave entre layers, transição suave entre forças de ik, criar animation events em real time, etc...
Esse tópico, apesar de antigo, trata de um problema parecido.
Nunca usei pra essa finalidade específica, uso mais pra transição suave entre layers, transição suave entre forças de ik, criar animation events em real time, etc...
Re: Animação customizada com "Exit Time"
O problema é que eu não posso usar o Animator padrão da Unity porque senão eu precisaria criar várias animações, porque eu uso Sprites diferentes em cada uma delas..
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Animação customizada com "Exit Time"
NKKF escreveu:O problema é que eu não posso usar o Animator padrão da Unity porque senão eu precisaria criar várias animações, porque eu uso Sprites diferentes em cada uma delas..
Eita, falha minha ao ler o tópico!
- Spoiler:
- (juro que vou parar com essa cachaça!)
Cara, essa eu realmente não imagino como resolver.
Mas eu acho que se você tiver as partes separadas, pode tentar fazer um esquema com rig2D + SpriteMesh + Animator da Unity (2018.3 +).
Re: Animação customizada com "Exit Time"
Caramba.. Mas como funcionaria esse negócio de parte separadas??
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Animação customizada com "Exit Time"
Pensei em ter as partes customizáveis separadas (Braços, cabeça, etc...), Os bones serviriam como referência para instanciar as partes customizadas, e eles é quem seriam animados.
Assim acho que daria pra usar um animator "padrão" pra todos os personagens.
Acho que dá até pra fazer isso com transforms comuns como referência, mas acho que com rig2d é mais prático.
Assim acho que daria pra usar um animator "padrão" pra todos os personagens.
Acho que dá até pra fazer isso com transforms comuns como referência, mas acho que com rig2d é mais prático.
Re: Animação customizada com "Exit Time"
Mas aí que entra o problema: as Animações, por terem sprites diferentes, não podem ser recicladas. Então teria que criar uma animação para cada caso.. (Sem contar que há várias animações só numa sprite: correr, parado, etc)
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Animação se repetindo mesmo com loop time desmarcado
» Entou com duvida com on trigger Enter e Exit - UNITY
» Time e Best Time como salvar o Best Time
» OnTriggerEnter/Exit não é identificada
» mudar o vector 3 com time.delta time
» Entou com duvida com on trigger Enter e Exit - UNITY
» Time e Best Time como salvar o Best Time
» OnTriggerEnter/Exit não é identificada
» mudar o vector 3 com time.delta time
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos