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

Controles funcionando ao Contrario

Bom dia, poderiam me ajudar , pois o meu jogador está com as direções dos controles contrários.

7 respostas
solução!

Oi, Anderson, tudo bem?

Como está o código da sua personagem? A câmera tá posicionada corretamente atrás da personagem?

Porque se você usar as posições relativas independente do lado seu personagem deveria ir pra direção que ele está apontado.

Olá, Henrique.

Estou com o mesmo problema do Anderson. No meu caso, utilizando WASD para movimentar, o A faz a personagem se mover para a direita e o D para a esquerda. Aqui está meu código para o ControlaJogador.cs:


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>();
    }

    void Update () {

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

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

        //Animações do Jogador
        if (direcao != Vector3.zero)
        {
            animatorJogador.SetBool("Movendo", true);
        } else {
            animatorJogador.SetBool("Movendo", false);
        }

        if (!Vivo) {
            if (Input.GetButton("Fire1")) {
                SceneManager.LoadScene ("game");
            }
        }
    }

    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);
        }
    }
}

Oi, Bruno, mesmo se movendo ao contrario na perspectiva do personagem quando você aperta W ele vai pra frente ou se move como se tivesse andando de costas? Vai na direção que está mirando a arma?

Henrique, acabei de testar novamente e a movimentação está "universal", ou seja, o W (e as outras teclas também) vai pra cima na tela não importa para onde a arma esteja apontada. Cometi algum erro?

Obrigado!

Você consegue subir seu projeto zipado em um Dropbox, Google Drive da vida pra baixar e dar uma olhada?

Aí é só colocar o link aqui :)

Consigo sim! E desculpe a demora.

https://drive.google.com/open?id=1azbSZnBPT_lO8cOgsbR_QgYQTGda7Lto

Muito obrigado!

Oi, Bruno, dei uma olhada no seu projeto e tinha algumas configurações nos axis de input que estavam fazendo ele ficar invertido. Você pode ir lá e desmarcar essa opção ou mais fácil seria dentro do seu projeto apaga tudo menos a pasta Assets e abre o projeto de novo.

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