2
respostas

Conduzir meu jogador esta um pouco complicado

Desenvolvi todo o jogo e estou com problemas de guiar meu personagem esta ruim para conduzir ele na tela a orientação do mouse fica muito rapido queria dicas para melhorar isto caso queiram testar esta ai .

https://eruindelima.itch.io/apocalipse-zumbi

2 respostas

Oi, Eruin, tudo bem?

Acho que o problema é que a câmera está rodando junto com o mouse, no caso do jogo que fizemos acho que seria melhor se só o personagem rotacionar. Você quer mandar esse comportamento? Como está o script de rotação?

Esse é o script do jogador. não sei se pode influenciar mas acabei colocando sem querer a main camera dentro da hierarquia do jogador.

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

public class ControlaJogador : MonoBehaviour {

public float Velocidade = 10;
private Vector3 direcao;
public LayerMask MascaraChao;
public GameObject TextoGameOver;
public bool Vivo = true;
private Rigidbody rigidbodyJogador;
private Animator animatorJogador;

private void Start() 
{
    Time.timeScale = 1;
    rigidbodyJogador = GetComponent<Rigidbody>();
    animatorJogador = GetComponent<Animator>();
}

// 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)
    {
        animatorJogador.SetBool("movendo", true);
    }
    else
    {
        animatorJogador.SetBool("movendo", false);
    }

    if(Vivo == false)
    {
        if(Input.GetButtonDown("Fire1"))
        {
            SceneManager.LoadScene("meujogo");
        }
    }
}
void FixedUpdate()
{
    rigidbodyJogador.MovePosition
        (rigidbodyJogador.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, MascaraChao))
    {
        Vector3 posicaoMiraJogador = impacto.point - transform.position;

        posicaoMiraJogador.y = transform.position.y;

        Quaternion novaRotacao = Quaternion.LookRotation(posicaoMiraJogador);

        rigidbodyJogador.MoveRotation(novaRotacao);
    }
}

}