1
resposta

Não funcionou

Abaixo está o código em C# no VS

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

public class Controla_Jogador : MonoBehaviour {

    public float Velocidade = 10;       // varáveis públicas declaradas na classe irão aparecer no inspector do unity
    Vector3 direcao;
    public LayerMask MascaraChao;

    // Update is called once per frame
    void Update () {

        float eixoX = Input.GetAxis("Horizontal");  // Movimenta no eixo x
        float eixoZ = Input.GetAxis("Vertical");    // Movimento no eixo z

        direcao = new Vector3(eixoX, 0, eixoZ);               // Cria vetor que pega os vlores de movimentação eixo x e z


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

    }

    // sempre que utilizar o Rigid Body deve se utilizar o fixed update
    void FixedUpdate()
    {
        // Busca componente rigidbody usa o método move position que pega a posição que estou + onde quero ir
        GetComponent<Rigidbody>().MovePosition(GetComponent<Rigidbody>().position + (direcao * Velocidade * Time.deltaTime));

        // O raio será traãdo apartir da camera até a posição do mouse
        Ray raio = Camera.main.ScreenPointToRay(Input.mousePosition);
        Debug.DrawRay(raio.origin, raio.direction * 100, Color.red);

        RaycastHit impacto;
        if (Physics.Raycast(raio, out impacto, 100, MascaraChao))
        {
            // posição da mira será baseada no ponto de impacto do raio com o chão e com a posição do jogador
            Vector3 posicaoMiraJogador = impacto.point - transform.position;
            // altera posição y para jogador e mira tenham a
            posicaoMiraJogador.y = transform.position.y;

            // variavel quaternion salva rotacao
            Quaternion novaRotacao = Quaternion.LookRotation(posicaoMiraJogador);

            // envia o movimento para o corpo
            GetComponent<Rigidbody>().MoveRotation(novaRotacao);

        }

    }
}

Porém quando vou dar play no jogo, o personagem não está rotacionando. Ele estava antes mas estava pegando a posição y do raio, quando fui tentar corrigir esse bug, que estava dando mesmo comigo atualizando a posição y igual a do jogador. O que fazer?

1 resposta

Oi, Cezar, tudo bem?

Aparece algum erro no Console? A camada da Layer está marcada com sucesso?

Tenta tirar a mascara do Raycast para ver se volta a funcionar.

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