[RESOLVIDO]Script de movimentação, problema para trocar de animação
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO]Script de movimentação, problema para trocar de animação
- Código:
TapGesture gesto;
public GameObject Jogador;
private Rigidbody2D JogadorRb;
//public Rigidbody2D corpo;
public Animator anim;
public AudioSource Passos;
public Transform Play;
public Transform Cam;
public Vector3 local;
public Vector3 localAnterior;
private Vector3 inicio;
public Vector3 destino;
private float tempoMovimento;
private Vector3 goal;
public static bool pode_descer;
public Vector2 Deslocamento = new Vector2 (0,0);
// Use this for initialization
void Start ()
{
gesto = GetComponent<TapGesture> ();
destino = Jogador.transform.position;
inicio = Jogador.transform.position;
JogadorRb = Jogador.GetComponent<Rigidbody2D> ();
pode_descer = true;
}
// Update is called once per frame
public void CancelaMovimento(){
JogadorRb.velocity = Vector2.zero;
}
void Update ()
{
if (
Mathf.Abs (destino.x - Jogador.transform.position.x) < .5f &&
Mathf.Abs (destino.y - Jogador.transform.position.y) < .5f
)
CancelaMovimento ();
if (JogadorRb.velocity == Deslocamento) {
anim.SetTrigger ("Parado");
}
Cam.transform.position = new Vector3 (Cam.position.x, Cam.position.y, -10);
if (pode_descer == true) {
if (Jogador.transform.position.y >= -1.29f && Jogador.transform.position.y <= 0.56f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 2;
} else if (Jogador.transform.position.y <= -1.29f && Jogador.transform.position.y >= -3.24f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 3;
} else if (Jogador.transform.position.y <= -3.24f && Jogador.transform.position.y >= -5.01f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 4;
}
} else if (pode_descer == false) {
if (Jogador.transform.position.y >= -1.29f && Jogador.transform.position.y <= 0.56f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 2;
}
} else if (Jogador.transform.position.y <= -3.24f && Jogador.transform.position.y >= -5.01f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 4;
}
}
public void ApplyForce(Vector3 _goal) {
JogadorRb.velocity = Vector2.zero;
goal = _goal;
var direcao = goal - Jogador.transform.position;
JogadorRb.AddForce(direcao.normalized * 400);
if (Mathf.Abs (direcao.x) > Mathf.Abs (direcao.y)) {
if (goal.x < Jogador.transform.position.x) {
anim.SetTrigger ("Esquerda");
} else if (goal.x > Jogador.transform.position.x) {
anim.SetTrigger ("Direita");
}
} else {
if (goal.y < Jogador.transform.position.y) {
anim.SetTrigger ("Descendo");
} else if (goal.y > Jogador.transform.position.y) {
anim.SetTrigger ("Subindo");
}
}
// if (animacao == 1) {
// anim.SetTrigger ("Esquerda");
// } else if (animacao == 2) {
// anim.SetTrigger ("Direita");
// } else if (animacao == 3) {
// anim.SetTrigger ("Descendo");
// } else if (animacao == 4) {
// anim.SetTrigger ("Subindo");
// }
}
public void Pressionou ()
{
if (gesto.ScreenPosition.x > 0 && gesto.ScreenPosition.x < Screen.width) {
if (gesto.ScreenPosition.y > 0 && gesto.ScreenPosition.y < Screen.height) {
destino = Camera.main.ScreenToWorldPoint (gesto.ScreenPosition);
destino.z = Jogador.transform.position.z;
ApplyForce (destino);
//anim.SetTrigger ("Andando");
if (!Passos.isPlaying)
Passos.Play ();
}
}
}
pessoal to com um problema nesse Script e não estou sabendo resolver alguém pode me ajudar?
Esse Script é de movimentação de Personagem por Touch (Usando o Plugin TouchSript), e eu estou com problema para mudar uma animação, o que acontece é o seguinte, eu clico em um determinado lugar, o personagem vai porém ele inicia com uma animação (que é a que eu quero, CIMA,BAIXO,DIREITA e ESQUERDA) mas no meio do caminho, ele troca a animação para parado, já tem uns dias que eu estou tentando corrigir isso mas não chego a lugar algum.
Última edição por recagonlei em Sáb Fev 10, 2018 3:05 pm, editado 2 vez(es) (Motivo da edição : Alterado título conforme os padrões do fórum.)
YmKx- Avançado
- PONTOS : 2962
REPUTAÇÃO : 8
Idade : 27
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
com o script não posso te ajudar... mas esses videos ai podem:
https://youtu.be/45_EABIc7VA?list=PLdvYQ0eC2DaoWcW0O3l9PfFXpKJhK1Fl7
https://youtu.be/J3vu4l25zJ0?list=PLdvYQ0eC2DaoWcW0O3l9PfFXpKJhK1Fl7
https://youtu.be/45_EABIc7VA?list=PLdvYQ0eC2DaoWcW0O3l9PfFXpKJhK1Fl7
https://youtu.be/J3vu4l25zJ0?list=PLdvYQ0eC2DaoWcW0O3l9PfFXpKJhK1Fl7
parkournick- Membro
- PONTOS : 3203
REPUTAÇÃO : 3
Idade : 22
Áreas de atuação : C#, Python
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Já tentou usar SetBool e SetFloat no lugar de SetTigger?YmKx escreveu:
- Código:
TapGesture gesto;
public GameObject Jogador;
private Rigidbody2D JogadorRb;
//public Rigidbody2D corpo;
public Animator anim;
public AudioSource Passos;
public Transform Play;
public Transform Cam;
public Vector3 local;
public Vector3 localAnterior;
private Vector3 inicio;
public Vector3 destino;
private float tempoMovimento;
private Vector3 goal;
public static bool pode_descer;
public Vector2 Deslocamento = new Vector2 (0,0);
// Use this for initialization
void Start ()
{
gesto = GetComponent<TapGesture> ();
destino = Jogador.transform.position;
inicio = Jogador.transform.position;
JogadorRb = Jogador.GetComponent<Rigidbody2D> ();
pode_descer = true;
}
// Update is called once per frame
public void CancelaMovimento(){
JogadorRb.velocity = Vector2.zero;
}
void Update ()
{
if (
Mathf.Abs (destino.x - Jogador.transform.position.x) < .5f &&
Mathf.Abs (destino.y - Jogador.transform.position.y) < .5f
)
CancelaMovimento ();
if (JogadorRb.velocity == Deslocamento) {
anim.SetTrigger ("Parado");
}
Cam.transform.position = new Vector3 (Cam.position.x, Cam.position.y, -10);
if (pode_descer == true) {
if (Jogador.transform.position.y >= -1.29f && Jogador.transform.position.y <= 0.56f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 2;
} else if (Jogador.transform.position.y <= -1.29f && Jogador.transform.position.y >= -3.24f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 3;
} else if (Jogador.transform.position.y <= -3.24f && Jogador.transform.position.y >= -5.01f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 4;
}
} else if (pode_descer == false) {
if (Jogador.transform.position.y >= -1.29f && Jogador.transform.position.y <= 0.56f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 2;
}
} else if (Jogador.transform.position.y <= -3.24f && Jogador.transform.position.y >= -5.01f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 4;
}
}
public void ApplyForce(Vector3 _goal) {
JogadorRb.velocity = Vector2.zero;
goal = _goal;
var direcao = goal - Jogador.transform.position;
JogadorRb.AddForce(direcao.normalized * 400);
if (Mathf.Abs (direcao.x) > Mathf.Abs (direcao.y)) {
if (goal.x < Jogador.transform.position.x) {
anim.SetTrigger ("Esquerda");
} else if (goal.x > Jogador.transform.position.x) {
anim.SetTrigger ("Direita");
}
} else {
if (goal.y < Jogador.transform.position.y) {
anim.SetTrigger ("Descendo");
} else if (goal.y > Jogador.transform.position.y) {
anim.SetTrigger ("Subindo");
}
}
// if (animacao == 1) {
// anim.SetTrigger ("Esquerda");
// } else if (animacao == 2) {
// anim.SetTrigger ("Direita");
// } else if (animacao == 3) {
// anim.SetTrigger ("Descendo");
// } else if (animacao == 4) {
// anim.SetTrigger ("Subindo");
// }
}
public void Pressionou ()
{
if (gesto.ScreenPosition.x > 0 && gesto.ScreenPosition.x < Screen.width) {
if (gesto.ScreenPosition.y > 0 && gesto.ScreenPosition.y < Screen.height) {
destino = Camera.main.ScreenToWorldPoint (gesto.ScreenPosition);
destino.z = Jogador.transform.position.z;
ApplyForce (destino);
//anim.SetTrigger ("Andando");
if (!Passos.isPlaying)
Passos.Play ();
}
}
}
pessoal to com um problema nesse Script e não estou sabendo resolver alguém pode me ajudar?
Esse Script é de movimentação de Personagem por Touch (Usando o Plugin TouchSript), e eu estou com problema para mudar uma animação, o que acontece é o seguinte, eu clico em um determinado lugar, o personagem vai porém ele inicia com uma animação (que é a que eu quero, CIMA,BAIXO,DIREITA e ESQUERDA) mas no meio do caminho, ele troca a animação para parado, já tem uns dias que eu estou tentando corrigir isso mas não chego a lugar algum.
Phph09- Profissional
- PONTOS : 3789
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Não cheguei a tentar, eu uso SetTrigger por causa de costume mesmo
YmKx- Avançado
- PONTOS : 2962
REPUTAÇÃO : 8
Idade : 27
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Tem uma maneira de eu coloca essa animação em loop? pelo que eu to percebendo aqui o problema não ta no script e sim no animator, porque a animação ta acabando antes da hora
YmKx- Avançado
- PONTOS : 2962
REPUTAÇÃO : 8
Idade : 27
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Bom dia! não abra tópicos com títulos que não demonstram uma parte do seu problema, como ajuda em script e tals, o fórum é visualizado por várias pessoas, esta no google, e títulos que não falam de um problema, não tem como servir de ajuda para outros, e estamos em um fórum. Seja objetivo nos seus títulos, descrevendo em parte o problema. O título será alterado. Foi você que escreveu o seu script?YmKx escreveu:
- Código:
TapGesture gesto;
public GameObject Jogador;
private Rigidbody2D JogadorRb;
//public Rigidbody2D corpo;
public Animator anim;
public AudioSource Passos;
public Transform Play;
public Transform Cam;
public Vector3 local;
public Vector3 localAnterior;
private Vector3 inicio;
public Vector3 destino;
private float tempoMovimento;
private Vector3 goal;
public static bool pode_descer;
public Vector2 Deslocamento = new Vector2 (0,0);
// Use this for initialization
void Start ()
{
gesto = GetComponent<TapGesture> ();
destino = Jogador.transform.position;
inicio = Jogador.transform.position;
JogadorRb = Jogador.GetComponent<Rigidbody2D> ();
pode_descer = true;
}
// Update is called once per frame
public void CancelaMovimento(){
JogadorRb.velocity = Vector2.zero;
}
void Update ()
{
if (
Mathf.Abs (destino.x - Jogador.transform.position.x) < .5f &&
Mathf.Abs (destino.y - Jogador.transform.position.y) < .5f
)
CancelaMovimento ();
if (JogadorRb.velocity == Deslocamento) {
anim.SetTrigger ("Parado");
}
Cam.transform.position = new Vector3 (Cam.position.x, Cam.position.y, -10);
if (pode_descer == true) {
if (Jogador.transform.position.y >= -1.29f && Jogador.transform.position.y <= 0.56f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 2;
} else if (Jogador.transform.position.y <= -1.29f && Jogador.transform.position.y >= -3.24f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 3;
} else if (Jogador.transform.position.y <= -3.24f && Jogador.transform.position.y >= -5.01f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 4;
}
} else if (pode_descer == false) {
if (Jogador.transform.position.y >= -1.29f && Jogador.transform.position.y <= 0.56f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 2;
}
} else if (Jogador.transform.position.y <= -3.24f && Jogador.transform.position.y >= -5.01f) {
Jogador.GetComponent<SpriteRenderer> ().sortingOrder = 4;
}
}
public void ApplyForce(Vector3 _goal) {
JogadorRb.velocity = Vector2.zero;
goal = _goal;
var direcao = goal - Jogador.transform.position;
JogadorRb.AddForce(direcao.normalized * 400);
if (Mathf.Abs (direcao.x) > Mathf.Abs (direcao.y)) {
if (goal.x < Jogador.transform.position.x) {
anim.SetTrigger ("Esquerda");
} else if (goal.x > Jogador.transform.position.x) {
anim.SetTrigger ("Direita");
}
} else {
if (goal.y < Jogador.transform.position.y) {
anim.SetTrigger ("Descendo");
} else if (goal.y > Jogador.transform.position.y) {
anim.SetTrigger ("Subindo");
}
}
// if (animacao == 1) {
// anim.SetTrigger ("Esquerda");
// } else if (animacao == 2) {
// anim.SetTrigger ("Direita");
// } else if (animacao == 3) {
// anim.SetTrigger ("Descendo");
// } else if (animacao == 4) {
// anim.SetTrigger ("Subindo");
// }
}
public void Pressionou ()
{
if (gesto.ScreenPosition.x > 0 && gesto.ScreenPosition.x < Screen.width) {
if (gesto.ScreenPosition.y > 0 && gesto.ScreenPosition.y < Screen.height) {
destino = Camera.main.ScreenToWorldPoint (gesto.ScreenPosition);
destino.z = Jogador.transform.position.z;
ApplyForce (destino);
//anim.SetTrigger ("Andando");
if (!Passos.isPlaying)
Passos.Play ();
}
}
}
pessoal to com um problema nesse Script e não estou sabendo resolver alguém pode me ajudar?
Esse Script é de movimentação de Personagem por Touch (Usando o Plugin TouchSript), e eu estou com problema para mudar uma animação, o que acontece é o seguinte, eu clico em um determinado lugar, o personagem vai porém ele inicia com uma animação (que é a que eu quero, CIMA,BAIXO,DIREITA e ESQUERDA) mas no meio do caminho, ele troca a animação para parado, já tem uns dias que eu estou tentando corrigir isso mas não chego a lugar algum.
Abraço!
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Eu tava fazendo na faculdade, com a ajuda de uns professores, a parte que eles me ajudaram a fazer ta OK, dai eles me pediram pra terminar fazendo as trocas de animação certinho, mas eu n to sabendo, porque tipo uma hora eu ajusto a animação para antes da hora, dai eu ajusto mais uma vez, e a animação para depois do momento que eu queria que ela parasse
YmKx- Avançado
- PONTOS : 2962
REPUTAÇÃO : 8
Idade : 27
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Te sugiro a dar uma olhada sobre o Animator:YmKx escreveu:Eu tava fazendo na faculdade, com a ajuda de uns professores, a parte que eles me ajudaram a fazer ta OK, dai eles me pediram pra terminar fazendo as trocas de animação certinho, mas eu n to sabendo, porque tipo uma hora eu ajusto a animação para antes da hora, dai eu ajusto mais uma vez, e a animação para depois do momento que eu queria que ela parasse
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
arrumei aqui, obrigado pessoal
YmKx- Avançado
- PONTOS : 2962
REPUTAÇÃO : 8
Idade : 27
Respeito as regras :
Re: [RESOLVIDO]Script de movimentação, problema para trocar de animação
Boa tarde! como resolveu?YmKx escreveu:arrumei aqui, obrigado pessoal
Abraço!
Tópicos semelhantes
» [RESOLVIDO] Estou com um problema no script de animação
» [RESOLVIDO] Problema com script para captura de texto
» [RESOLVIDO] script para ativar e desativar um objeto,animação,etc...
» [RESOLVIDO] Trocar Animaçao atraves de uma TECLA
» [RESOLVIDO] Problema com movimentação do Joystick
» [RESOLVIDO] Problema com script para captura de texto
» [RESOLVIDO] script para ativar e desativar um objeto,animação,etc...
» [RESOLVIDO] Trocar Animaçao atraves de uma TECLA
» [RESOLVIDO] Problema com movimentação do Joystick
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos