Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Personagem rotaciona estranho

Segui passo a passo. Não tem erro no código, mas quando eu movo o mouse para onde quero que ele rotacione, os zumbies e o jogador duplicam e fica tremendo, só retorna quando eu volto com o mouse para frente.

Segue o código ControlaJogador

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

public class ControlaJogador : MonoBehaviour
{

    public float velocidade = 10;
    Vector3 direcao;
    // Update is called once per frame
    void Update()
    {

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

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

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

    void FixedUpdate()
    {
        GetComponent<Rigidbody>().MovePosition
          (GetComponent<Rigidbody>().position +
          (direcao * velocidade * Time.deltaTime));


        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))
        {
            Vector3 posicaoMiraJogador = impacto.point - transform.position;

            posicaoMiraJogador.y = transform.position.y;

            Quaternion novaRotacao = Quaternion.LookRotation(posicaoMiraJogador);

            GetComponent<Rigidbody>().MoveRotation(novaRotacao);

        }
    }
}
6 respostas

Oi, William, tudo bem?

Tenta mudar essa linha:

posicaoMiraJogador.y = transform.position.y;

para:

posicaoMiraJogador.y = 0;

Assim desconsideramos qualquer influencia de rotação em Y, pode ser que sua jogadora não esteja com 0 em Y como a minha estava no vídeo.

Se quiser dar uma olhada numa outra solução mais espertinha, você pode ver esse tópico aqui

Tentei isso mas o problema persiste, mesmo com essa alteração no código não deu certo. O problema é este:

https://clipchamp.com/watch/ruthfymVl4d

Oi, William, muito estranho.

Quer fazer um .zip do seu projeto e mandar pra gente? Pode ser um Drive, Dropbox ou coisa assim só lembra de colocar como público.

Segue link para dowload do projeto:

https://we.tl/t-48gBoKq1Nc

solução!

Oi, William, tudo bem?

Essa rotação estranha está acontecendo porque a referencia não é o objeto que está se movimentando mas um objeto dentro dele.

Na Camera principal tem a variável Jogador ela está preenchida com um objeto chamado Jogador (que seria a malha 3D do personagem) dentro do prefab Jogador. Só troca essa variável para o objeto Jogador de fora o Prefab em si, que tem o Rigidbody, Capsule Collider, etc.

Isso deve resolver hehe

obrigado deu certo

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