GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

[RESOLVIDO] - Unity - Vector3.MoveTowards só leva o Jogador pra uma direção

Tags: #<Tag:0x00007fe90db8c2e0>

Boa noite!

Talvez pela falta de experiência com a Unity e o C#, esse problema deve ter uma solução simples, mas ainda está fora do meu alcance. Seguinte:

Tenho um Jogador do jogo LUDO e ele tem uma animação em que o jogador Anda/Corre/Pula/Dança. Fiz esse jogador se mover de um ponto a outro com a animação Andar. Esse deslocamento do jogador pode ser feito em 2 direções, chamo elas de frente/trás e direita/esquerda. Estou usando o Vector3.MoveTowards para mover o jogador. Quando ele se move na direção direita/esquerda, o jogador se move junto com a animação, mas quando mudo a direção/ângulo para frente/trás ele se move, mas não tem a animação!

Abaixo segue o método que faz o jogador se mover com animação tbm:

public void andar(float posicaoFinalX, float posicaoFinalY, float posicaoFinalZ, float anguloX, float anguloY, float anguloZ) {
// Seta o parâmetro dos movimentos do jogador. Aqui ele dá um passo
animator.SetFloat(“Movimento”, andando);

// Declara os Ângulos do Jogador
transform.eulerAngles = new Vector3(anguloX, anguloY, anguloZ);

// Posição Final do Jogador
Vector3 posFinal = new Vector3(posicaoFinalX, posicaoFinalY, posicaoFinalZ);

// Movimento da Posição Inicial para a Final do Jogador
transform.position = Vector3.MoveTowards(transform.position, posFinal, velocidadeAndar * Time.deltaTime);

// Congela os Ângulos e as Posições da Física do Jogador
rigidbody.constraints = RigidbodyConstraints.FreezeAll;

print("====== Andando ======= ");
print("transform.position.x = " + transform.position.x);
print("posFinal.x =========== " + posFinal.x);

if(transform.position.x == posFinal.x) {
    // O valor do dado deve ser zerado para não interferir nas outras jogadas e para manter o jogador parado
    dado = 0;
    // Chamada do Método "parar" em que o Jogador fica parado
    parar(posFinal.x, posFinal.y, posFinal.z, anguloX, anguloY, anguloZ);
}

}

Quero fazer o jogador se movimentar com a animação (de andar) nas 2 direções, ou seja, quando o jogador andar no sentido da direita/esquerda ele siga nessa direção, e frente/trás também. Não sei se tem como manipular o Vector3.MoveTowards para que ele siga pra frente de acordo com algum ângulo/direção passado. Enfim.

Espero não ter confundido vcs! Obg!

Resolvi! Foi uma besteira minha!

Eu estava verificando o Eixo de X para situações que deveriam ser verificadas no Eixo de Z, por isso ele estava tendo esse comportamento. Deixo o tópico aki, pois pode ajudar a alguém que pode se encontrar em situações como essa!

//