Travar animação
2 participantes
Página 1 de 1
Travar animação
Boa noite pessoal, sou iniciante no Unity e estou precisando uma forcinha dos mais experientes. Quando o meu objeto de controle estiver em movimento para um lado "x" a animação só seja ativada uma vez para cada lado. O objeto precisa virar de direção e só ativar a animação se estiver em sentido contrário.
O script que estou usando
O script que estou usando
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PularAnim : MonoBehaviour {
public float forcaPulo;
public float velocidadeMaxima;
bool chao;
void Start()
{
}
void Update()
{
Rigidbody2D rigidbody = GetComponent<Rigidbody2D>();
float movimento = Input.GetAxis("Horizontal");
rigidbody.velocity = new Vector2(movimento * velocidadeMaxima, rigidbody.velocity.y);
if (movimento < 0)
{
GetComponent<SpriteRenderer>().flipX = true;
}
else if (movimento > 0)
{
GetComponent<SpriteRenderer>().flipX = false;
}
if (Input.GetKeyDown(KeyCode.Space) && chao)
{
rigidbody.AddForce(new Vector2(0, forcaPulo));
GetComponent<Animator>().SetTrigger("pular");
}
if (movimento > 0 || movimento < 0)
{
GetComponent<Animator>().SetBool("virar", true);
}
else
{
GetComponent<Animator>().SetBool("virar", false);
}
}
void OnCollisionEnter2D(Collision2D collision2D)
{
if (collision2D.gameObject.CompareTag("Plataforma"))
{
Debug.Log("chao");
chao = true;
}
}
void OnCollisionExit2D(Collision2D collision2D)
{
if (collision2D.gameObject.CompareTag("Plataforma"))
{
Debug.Log("pulo");
chao = false;
}
}
}
MarcioGSouza- Iniciante
- PONTOS : 2088
REPUTAÇÃO : 0
Respeito as regras :
Re: Travar animação
Tenta isto:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PularAnim : MonoBehaviour {
public float forcaPulo;
public float velocidadeMaxima;
bool chao;
int animState;
void Start() {
animState = 0;
}
void Update() {
Rigidbody2D rigidbody = GetComponent<Rigidbody2D>();
float movimento = Input.GetAxis("Horizontal");
rigidbody.velocity = new Vector2(movimento * velocidadeMaxima, rigidbody.velocity.y);
if (movimento < 0 && animState != 1) {
animState = 1;
GetComponent<SpriteRenderer>().flipX = true;
} else if (movimento > 0 && animState != -1) {
animState = -1;
GetComponent<SpriteRenderer>().flipX = false;
}
if (Input.GetKeyDown(KeyCode.Space) && chao) {
rigidbody.AddForce(new Vector2(0, forcaPulo));
GetComponent<Animator>().SetTrigger("pular");
}
if (Mathf.Abs(movimento) > 0) {
GetComponent<Animator>().SetBool("virar", true);
} else {
GetComponent<Animator>().SetBool("virar", false);
}
}
void OnCollisionEnter2D(Collision2D collision2D) {
if (collision2D.gameObject.CompareTag("Plataforma")) {
Debug.Log("chao");
chao = true;
}
}
void OnCollisionExit2D(Collision2D collision2D) {
if (collision2D.gameObject.CompareTag("Plataforma")) {
Debug.Log("pulo");
chao = false;
}
}
}
Tópicos semelhantes
» Travar a camera do FirstPersoController
» Travar movimento pra frente
» [RESOLVIDO] Travar o Objeto
» Gostaria de fazer a animação do arco seguir animação do personagem
» Animação não reproduz e só fica parado em uma animação
» Travar movimento pra frente
» [RESOLVIDO] Travar o Objeto
» Gostaria de fazer a animação do arco seguir animação do personagem
» Animação não reproduz e só fica parado em uma animação
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos