Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

coloquei o código no FixedUpdate mas o personagem não anda mais!!

Estou em um dilema,alguém pode me ajudar? a animação do personagem continua normalmente mas ele não se move...

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Controlajogador : MonoBehaviour
{
    public float velocidade = 10;
    // Start is called before the first frame update
    void Start()
    {

    }
    Vector3 direcao;
    // Update is called once per frame
    void Update() {

        float eixoX = Input.GetAxis("Horizontal");
        float eixoZ = Input.GetAxis("Vertical");

        Vector3 direcao = new Vector3(eixoX, 0, eixoZ);



        if(direcao != Vector3.zero)
        {
            GetComponent<Animator>().SetBool("Movendo", true);
        }
        else
        {
            GetComponent<Animator>().SetBool("Movendo", false);
        }

    }

    private void FixedUpdate()
    {
        GetComponent<Rigidbody>().MovePosition
            (GetComponent<Rigidbody>().position +
            (direcao * velocidade * Time.deltaTime));
    }
}
1 resposta
solução!

Oi, Aparecida, tudo bem?

No seu script Update tem que alterar essa linha:

Vector3 direcao = new Vector3(eixoX, 0, eixoZ);

para

direcao = new Vector3(eixoX, 0, eixoZ);

assim você vai alterar a variável direção declarada no começo do script e não criar uma nova. Isso vai fazer com que o código do FixedUpdate rode com ela com valor e não zero como esta agora.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software