[RESOLVIDO] Animaçao só funciona uma vez
5 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Animaçao só funciona uma vez
Cara tou com problema com uma animaçao de reload na tela de uma arma.. criei um script pra quando apertar R fazer a animaçao na tela só que quando aperto R só executa a animaçao uma vez mesmo pressionando a tecla denovo nao repete a animaçao, quero que sempre apertar faça a animaçao..eu liguei a transição do estado parado pra estado carregando e dei true na condiçao e de carregando pra parado coloquei false o que tem de errado? esse o script
- Código:
using UnityEngine;
using System.Collections;
public class Recarga : MonoBehavior {
private Animator recarregando;
void Start() {
recarregando = GetComponent<Animator>();
}
void Update() {
if(Input.GetKeyDown("r")) {
recarregando.SetBool("recarregando", true);
}
else {
(Input.GetKeyDown("r")) {
recarregando.SetBool("recarregando", false);
}
}
}
}
Última edição por MarcosSchultz em Seg Dez 03, 2018 1:41 am, editado 2 vez(es) (Motivo da edição : Troquei a palavra Animator por Animation na hora de escrever)
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
Boa tarde,kara tá dando algum erro ?
pq na linha 5 vc tá declarando um Animator, e na 8
voce tá retornando um Animation,
pq na linha 5 vc tá declarando um Animator, e na 8
voce tá retornando um Animation,
Re: [RESOLVIDO] Animaçao só funciona uma vez
Troque essa linha:
Por isso:
- Código:
recarregando = GetComponent<Animation>();
Por isso:
- Código:
recarregando = GetComponent<Animator>();
Re: [RESOLVIDO] Animaçao só funciona uma vez
Nao da nem um erro só que excuta a animaçao só uma vezFelipeSouza11 escreveu:Boa tarde,kara tá dando algum erro ?
pq na linha 5 vc tá declarando um Animator, e na 8
voce tá retornando um Animation,
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
MayLeone escreveu:Troque essa linha:
- Código:
recarregando = GetComponent<Animation>();
Por isso:
- Código:
recarregando = GetComponent<Animator>();
Mas la ja ta como Animator o Animation eu errei quando escrevi o codigo :!
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
MarcosSchultz escreveu:E como estão os estados no seu Animator?
A arma tem duas animaçao idle e carregando e criei um estado vazio pra fazer as transiçao como mostra na imagem do link..eu coloquei a letra R pra recarregar junto com o reload do sistema de tiro com raycast que vc fez
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
Esse é o da imagem do animator
https://prntscr.com/ln5dnc
https://prntscr.com/ln5dnc
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
[list=linenums]
[*]if(Input.GetKeyDown("r")) {
[*] recarregando.SetBool("recarregando", true);
[*] }
[*] else {
[*] (Input.GetKeyDown("r")) {
[*] recarregando.SetBool("recarregando", false);
[*]
[*] }
[/list]
Amigo não sei como está o seu Animator na interface, porém não sei o que queria fazer com esse IF e Else.
O IF eu entendi: Se apertar R mande o valor true para o parâmetro do animator chamado "recarregando", porém o ELSE Está perguntando a mesma coisa.
Então isso quer dizer uma coisa: O Else nunca será executado, já que ele só é executado com o IF acima dele dará o valor FALSE.
Então podemos ter é possível ter a seguinte afirmação: O parâmetro: recarregando não está deixando de ser true. (Isso se não existe outra animação em que ele vá automaticamente com o fim da animação de recarregar.)
Então sempre na primeira vez funcionará e passará ao Animator que o recarregando é true, porém nunca mais ele volta a ser false como antes, por isso não volta a fazer a animação.
Então a solução é você fazer o parâmetro voltar a false.
Ou também no lugar de usar um bool, você pode usar um trigger, pois um ele diferente do bool que fica ativo até você desativa-lo, o trigger é como diz o nome, um "gatilho" onde executa a animação apenas uma vez, somente no momento de sua ativação, e você ser ativado diversas vezes sem que precise "desativa-lo" (Colocar false)
[*]if(Input.GetKeyDown("r")) {
[*] recarregando.SetBool("recarregando", true);
[*] }
[*] else {
[*] (Input.GetKeyDown("r")) {
[*] recarregando.SetBool("recarregando", false);
[*]
[*] }
[/list]
Amigo não sei como está o seu Animator na interface, porém não sei o que queria fazer com esse IF e Else.
O IF eu entendi: Se apertar R mande o valor true para o parâmetro do animator chamado "recarregando", porém o ELSE Está perguntando a mesma coisa.
Então isso quer dizer uma coisa: O Else nunca será executado, já que ele só é executado com o IF acima dele dará o valor FALSE.
Então podemos ter é possível ter a seguinte afirmação: O parâmetro: recarregando não está deixando de ser true. (Isso se não existe outra animação em que ele vá automaticamente com o fim da animação de recarregar.)
Então sempre na primeira vez funcionará e passará ao Animator que o recarregando é true, porém nunca mais ele volta a ser false como antes, por isso não volta a fazer a animação.
Então a solução é você fazer o parâmetro voltar a false.
Ou também no lugar de usar um bool, você pode usar um trigger, pois um ele diferente do bool que fica ativo até você desativa-lo, o trigger é como diz o nome, um "gatilho" onde executa a animação apenas uma vez, somente no momento de sua ativação, e você ser ativado diversas vezes sem que precise "desativa-lo" (Colocar false)
Mago- Iniciante
- PONTOS : 2310
REPUTAÇÃO : 4
Áreas de atuação : Programação C#, Java, PHP, Banco de Dados, Game Design, Análise de Sistemas.
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
Mago escreveu:[list=linenums]
[*]if(Input.GetKeyDown("r")) {
[*] recarregando.SetBool("recarregando", true);
[*] }
[*] else {
[*] (Input.GetKeyDown("r")) {
[*] recarregando.SetBool("recarregando", false);
[*]
[*] }
[/list]
Amigo não sei como está o seu Animator na interface, porém não sei o que queria fazer com esse IF e Else.
O IF eu entendi: Se apertar R mande o valor true para o parâmetro do animator chamado "recarregando", porém o ELSE Está perguntando a mesma coisa.
Então isso quer dizer uma coisa: O Else nunca será executado, já que ele só é executado com o IF acima dele dará o valor FALSE.
Então podemos ter é possível ter a seguinte afirmação: O parâmetro: recarregando não está deixando de ser true. (Isso se não existe outra animação em que ele vá automaticamente com o fim da animação de recarregar.)
Então sempre na primeira vez funcionará e passará ao Animator que o recarregando é true, porém nunca mais ele volta a ser false como antes, por isso não volta a fazer a animação.
Então a solução é você fazer o parâmetro voltar a false.
Ou também no lugar de usar um bool, você pode usar um trigger, pois um ele diferente do bool que fica ativo até você desativa-lo, o trigger é como diz o nome, um "gatilho" onde executa a animação apenas uma vez, somente no momento de sua ativação, e você ser ativado diversas vezes sem que precise "desativa-lo" (Colocar false)
Tdm que criar outro paramentro? Esse é link da imagem do animator https://prntscr.com/ln5dnc
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
francisco barroso escreveu:
Tdm que criar outro paramentro? Esse é link da imagem do animator https://prntscr.com/ln5dnc
Tenta dar uma olhada em como seus parâmetros se comportam. E dá uma olhada no que falei do parâmetro recarregando estar sempre true.
Fique olhando o animator enquanto o jogo é executado, e analise no momento da chamada da animação.
Mago- Iniciante
- PONTOS : 2310
REPUTAÇÃO : 4
Áreas de atuação : Programação C#, Java, PHP, Banco de Dados, Game Design, Análise de Sistemas.
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
Vou ver mano obg
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
To pensando aqui... Já que é uma animação que é executada e depois deve ser finalizada, o mais correto nem seria usar bool, porque o bool serve mais quando a animação é constante e só muda quando algum estado mudar, por exemplo para andar e ficar parado: a animação de andar deve ser constante e ficar rodando até que a bool 'parado' fique true e ela termine.
No seu caso, como parece ser uma animação que executa e depois DEVE acabar logo em seguida, o mais correto seria usar trigger.
Então eu faria o seguinte: Na animação parado eu faria uma transição com a condição de um trigger (por exemplo "recarregar"), com a opção "has exit time" desmarcada para a animação "recarregando", e da animação "recarregando" para a animação "parado" eu deixaria sem condicional e com a opção "has exit time" marcada, assim aconteceria o seguinte, quando a animação de recarregar chegasse no fim, automaticamente ela voltaria pro parado, e quando você apertar a tecla de recarregar, ela iria chamar a animação de recarga.
Entããão o código ficaria apenas:
No seu caso, como parece ser uma animação que executa e depois DEVE acabar logo em seguida, o mais correto seria usar trigger.
Então eu faria o seguinte: Na animação parado eu faria uma transição com a condição de um trigger (por exemplo "recarregar"), com a opção "has exit time" desmarcada para a animação "recarregando", e da animação "recarregando" para a animação "parado" eu deixaria sem condicional e com a opção "has exit time" marcada, assim aconteceria o seguinte, quando a animação de recarregar chegasse no fim, automaticamente ela voltaria pro parado, e quando você apertar a tecla de recarregar, ela iria chamar a animação de recarga.
Entããão o código ficaria apenas:
- Código:
if (Input.GetKeyDown("r"))
recarregando.SetTrigger("recarregar");
Re: [RESOLVIDO] Animaçao só funciona uma vez
MayLeone escreveu:To pensando aqui... Já que é uma animação que é executada e depois deve ser finalizada, o mais correto nem seria usar bool, porque o bool serve mais quando a animação é constante e só muda quando algum estado mudar, por exemplo para andar e ficar parado: a animação de andar deve ser constante e ficar rodando até que a bool 'parado' fique true e ela termine.
No seu caso, como parece ser uma animação que executa e depois DEVE acabar logo em seguida, o mais correto seria usar trigger.
Então eu faria o seguinte: Na animação parado eu faria uma transição com a condição de um trigger (por exemplo "recarregar"), com a opção "has exit time" desmarcada para a animação "recarregando", e da animação "recarregando" para a animação "parado" eu deixaria sem condicional e com a opção "has exit time" marcada, assim aconteceria o seguinte, quando a animação de recarregar chegasse no fim, automaticamente ela voltaria pro parado, e quando você apertar a tecla de recarregar, ela iria chamar a animação de recarga.
Entããão o código ficaria apenas:
- Código:
if (Input.GetKeyDown("r"))
recarregando.SetTrigger("recarregar");
ok vou fazer aqui se der serto eu respondo
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Re: [RESOLVIDO] Animaçao só funciona uma vez
MayLeone escreveu:To pensando aqui... Já que é uma animação que é executada e depois deve ser finalizada, o mais correto nem seria usar bool, porque o bool serve mais quando a animação é constante e só muda quando algum estado mudar, por exemplo para andar e ficar parado: a animação de andar deve ser constante e ficar rodando até que a bool 'parado' fique true e ela termine.
No seu caso, como parece ser uma animação que executa e depois DEVE acabar logo em seguida, o mais correto seria usar trigger.
Então eu faria o seguinte: Na animação parado eu faria uma transição com a condição de um trigger (por exemplo "recarregar"), com a opção "has exit time" desmarcada para a animação "recarregando", e da animação "recarregando" para a animação "parado" eu deixaria sem condicional e com a opção "has exit time" marcada, assim aconteceria o seguinte, quando a animação de recarregar chegasse no fim, automaticamente ela voltaria pro parado, e quando você apertar a tecla de recarregar, ela iria chamar a animação de recarga.
Entããão o código ficaria apenas:
- Código:
if (Input.GetKeyDown("r"))
recarregando.SetTrigger("recarregar");
funcionouu obg vc e o mago
francisco barroso- Programador
- PONTOS : 2612
REPUTAÇÃO : 59
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Animação
» [RESOLVIDO] Problemas com animação
» [Resolvido] LOD Group + Animação
» [RESOLVIDO]Velocidade de animação
» [RESOLVIDO] Animação Em Legacy
» [RESOLVIDO] Problemas com animação
» [Resolvido] LOD Group + Animação
» [RESOLVIDO]Velocidade de animação
» [RESOLVIDO] Animação Em Legacy
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos