Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

O raio não aparece como na explicação

Olá bom dia, boa tarde e boa noite, Estou com problemas da aparição do raio que não mostra ja revisei os códigos e nada do raio aparecer estou colocando abaixo o codigo para ver se tem algo de errado podem me ajudar e esta dando erro: NullReferenceException: Object reference not set to an instance of an object control_player.FixedUpdate () (at Assets/Script/control_player.cs:30)

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, Color.black);
    }
6 respostas

Estou anexando um link de acesso aos arquivos: https://1drv.ms/u/s!Artltgi23xTKh5A-7h3MCfgQa0P2vA?e=giGdVt

Oi, Gabriel, tudo bem?

Você pode colar seu script todo? Talvez tenha algum problema antes ou depois mas se você consegue dar Play na Unity ele deveria funcionar.

Você também alterar a linha do DrawRay para:

Debug.DrawRay(raio.origin, raio.direction * 10, Color.black);

Assim o seu raio fica bem maior e mais fácil de ver.

Fiz a alteração e nada aconteceu e continua com o mesmo problema e enviei os arquivos para darem uma revisada se tem algo erro e esta dando erro: NullReferenceException: Object reference not set to an instance of an object control_player.FixedUpdate () (at Assets/Script/control_player.cs:30) Codigo completo:

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

public class control_player : 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("Movendo", true);
        }
        else
        {
            GetComponent<Animator>().SetBool("Movendo", 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.black);
    }
}

Olá aqui que estou postando os arquivos:

https://1drv.ms/u/s!Artltgi23xTKh5BjuphwLvJHItwtBA?e=lnr8BW

solução

Oi, Gabriel, parece que sua camera não tem a Tag MainCamera que é o padrão da Unity e é como ele busca usando o Camera.main, é só trocar que deve funcionar. Anexei abaixo uma imagem sobre o local da troca, clicando lá você seleciona a opção.

Isso deve fazer funcionar. Bom curso!

imagem tag main camera

Muito obrigado, só um detalhe que fez toda a diferença, E valeu.