[RESOLVIDO] Problemas com animação
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Problemas com animação
Boa noite, meu problema é quando eu aperto a tecla D a animação rola numa boa, mais quando aperto a tecla A ela ativa, mais a Idle não desativa ai fica a idle e a animação da tecla A ativada ai a animação nao rola fica parado na idle.. Ja fiz um teste no script e quando coloco a Animação A em baixo da animação D ela roda, ai a D para de rodar, então acredito que o problema esteje no script. não sei ;-; Podem me ajudar?
Script:
Script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
float H;
public float Andar = 1;
Animator AnimPlayer;
void Start(){
AnimPlayer = GetComponent<Animator> ();
}
void FixedUpdate () {
H = Input.GetAxis ("Horizontal");
Move (H);
Esquerda ();
Direita ();
}
void Move(float j){
GetComponent<Rigidbody> ().velocity = new Vector2 (j*Andar, GetComponent<Rigidbody> ().velocity.y);
}
void Esquerda(){
//Andar Esquerda
if (Input.GetKey (KeyCode.A)) {
AnimPlayer.SetBool ("WalkBack", true);
AnimPlayer.SetBool ("Idle", false);
}else if(!Input.GetKey (KeyCode.A)){
AnimPlayer.SetBool ("Idle", true);
AnimPlayer.SetBool ("WalkBack", false);
}
}
void Direita(){
//Andar Direita
if (Input.GetKey (KeyCode.D)) {
AnimPlayer.SetBool ("Walk", true);
AnimPlayer.SetBool ("Idle", false);
}else if(!Input.GetKey (KeyCode.D)){
AnimPlayer.SetBool ("Idle", true);
AnimPlayer.SetBool ("Walk", false);
}
}
}
Última edição por dstaroski em Seg Abr 03, 2017 7:40 pm, editado 2 vez(es) (Motivo da edição : Resolvido)
Re: [RESOLVIDO] Problemas com animação
Eu não soube explicar direito o problema, se não entenderem tento explicar de novo..
Re: [RESOLVIDO] Problemas com animação
Putz... já tentou criar mais uma bool, que fique no inicio dos ifs das teclas,e que só permita que por exemplo, a função da tecla A funcione se a D não está pressionada e vice e versa, acredito que esse problema seja porque o idle de uma das teclas está interferindo na outra.
Não sei se deu pra entender, exemplo: if((Input.GetKey (KeyCode.A) && !TeclaD) {xxx}.
Abraço!
Não sei se deu pra entender, exemplo: if((Input.GetKey (KeyCode.A) && !TeclaD) {xxx}.
Abraço!
Re: [RESOLVIDO] Problemas com animação
Tenta separar a animação Idle dentro de uma booleana no update, tipo assim, quando está pressionado as teclas A ou D ela fica false para não animar, e quando não estão sendo pressionadas, a bool ativa executando a animação do idle, tipo assim:Junim escreveu:Tentei, mas nã resolveu o problema. O Bug ainda persiste !
if(Idle){ // nova booleana em true
AnimPlayer.setBoll("Idle", true);
}
else{
AnimPlayer.setBoll("Idle", false);
}
assim removendo os if else de dentro dos comandos das teclas, acho que eles estão dando problema.
Abraço!
Re: [RESOLVIDO] Problemas com animação
Tentarei aqui. Abraços ! obrigado dstaroski, uns dos melhores ajudantes do forum !
Re: [RESOLVIDO] Problemas com animação
Cara fiz assim, mas se eu solto o botao a animação continua eu deveria colocar que ela é false em algum lugar certo? mas aonde?
Tentei colocar no if do fixedUpdate e nao deu certo..
Tentei colocar no if do fixedUpdate e nao deu certo..
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
float H;
public float Andar = 1;
Animator AnimPlayer;
bool Idle;
void Start(){
AnimPlayer = GetComponent<Animator> ();
Idle = true;
}
void FixedUpdate () {
H = Input.GetAxis ("Horizontal");
Move (H);
Esquerda ();
Direita ();
if (Idle == true && !Input.GetKey (KeyCode.A) || !Input.GetKey (KeyCode.D)) {
AnimPlayer.SetBool ("Idle", true);
} else {
AnimPlayer.SetBool ("Idle", false);
}
}
void Move(float j){
GetComponent<Rigidbody> ().velocity = new Vector2 (j*Andar, GetComponent<Rigidbody> ().velocity.y);
}
void Esquerda(){
//Andar Esquerda
if (Input.GetKey (KeyCode.A) && Idle == true) {
AnimPlayer.SetBool ("WalkBack", true);
Idle = false;
}
}
void Direita(){
//Andar Direita
if (Input.GetKey (KeyCode.D) && Idle == true) {
AnimPlayer.SetBool ("Walk", true);
Idle = false;
}
}
}
Re: [RESOLVIDO] Problemas com animação
Eu coloco nos parametos booleano do Animator so Walk,Rum e etc...
exp; isWalk,isRum nao faço com o Idle entao quando apertar para andar ou correr ele fara tais animaçoes mais se nao estiver apertando butoes ele ficara em Idle
e no script ficara assim AnimPlayer.setBoll("isWalk", true);
AnimPlayer.setBoll("isRum", true);
um outro exeplo para meu pesonagem pular
void Update(){
if(Input.GetButtonDown("Jump"){
anim.SetBool("isJump",true);
}else{
anim.SetBool("isJump",false);
}
exp; isWalk,isRum nao faço com o Idle entao quando apertar para andar ou correr ele fara tais animaçoes mais se nao estiver apertando butoes ele ficara em Idle
e no script ficara assim AnimPlayer.setBoll("isWalk", true);
AnimPlayer.setBoll("isRum", true);
um outro exeplo para meu pesonagem pular
void Update(){
if(Input.GetButtonDown("Jump"){
anim.SetBool("isJump",true);
}else{
anim.SetBool("isJump",false);
}
Re: [RESOLVIDO] Problemas com animação
porque não substitui o bool por float?
Idle = 0
walkback = - 1
walk = 1
Idle = 0
walkback = - 1
walk = 1
Madson- Iniciante
- PONTOS : 2836
REPUTAÇÃO : 7
Respeito as regras :
Re: [RESOLVIDO] Problemas com animação
Ae pessoal eu resolvi, apenas juntei todo o script dessa maneira..
Obrigado !
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {
float H;
public float Andar = 1;
Animator AnimPlayer;
void Start(){
AnimPlayer = GetComponent<Animator> ();
}
void FixedUpdate () {
H = Input.GetAxis ("Horizontal");
Move (H);
Moviment ();
}
void Move(float j){
GetComponent<Rigidbody> ().velocity = new Vector2 (j*Andar, GetComponent<Rigidbody> ().velocity.y);
}
void Moviment(){
if (Input.GetKey (KeyCode.A)) {
AnimPlayer.SetBool ("WalkBack", true);
AnimPlayer.SetBool ("Idle", false);
AnimPlayer.SetBool ("Walk", false);
} else if (Input.GetKey (KeyCode.D)) {
AnimPlayer.SetBool ("Walk", true);
AnimPlayer.SetBool ("Idle", false);
AnimPlayer.SetBool ("WalkBack", false);
} else {
AnimPlayer.SetBool ("Idle", true);
AnimPlayer.SetBool ("WalkBack", false);
AnimPlayer.SetBool ("Walk", false);
}
}
}
Obrigado !
Tópicos semelhantes
» [RESOLVIDO] Problemas com blender
» [RESOLVIDO] Problemas com Collider
» [RESOLVIDO] problemas com rigidbody
» problemas com animaçao se poderem ajuda agradeço ^^
» [RESOLVIDO] Problemas com rigid body do player.
» [RESOLVIDO] Problemas com Collider
» [RESOLVIDO] problemas com rigidbody
» problemas com animaçao se poderem ajuda agradeço ^^
» [RESOLVIDO] Problemas com rigid body do player.
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos