В объект попал луч - единство

У меня есть этот код для лазера, я хочу загрузить новую сцену, когда лазер касается игрока. этот скрипт не работает, буду рад вашей помощи!:)

 void Update()
    {
        Vector3 Point = transform.position + transform.forward * Dis;

        if (Physics.Raycast (transform.position, transform.forward, out hit, Dis))
        {
            if (hit.collider.tag == "Player")
                SceneManager.LoadScene(2);

            GetComponent<LineRenderer>().SetPosition(0, transform.position);
            GetComponent<LineRenderer>().SetPosition(1, hit.point);
            luzColosao.transform.position = hit.point - pos;
        }
        else
        {
            GetComponent<LineRenderer>().SetPosition(0, transform.position);
            GetComponent<LineRenderer>().SetPosition(1, Point);
            luzColosao.transform.position = Point;
        }
    }

1 ответ


Кажется, у тебя в коде все нормально. использоватьDebug.Drawчтобы проверить направление Raycast. Эта функция будет рисовать линию точно так же, как и ваш Raycast в вашем редакторе. если эта линия была правильно задана игроку, то вы должны проверить свои условия. Прочтите руководство Unity здесь

void Update()
    {

        Vector3 forward = transform.TransformDirection(Vector3.forward) * Dist;

        Vector3 Point = transform.position + transform.forward * Dis;

        if (Physics.Raycast (transform.position, transform.forward, out hit, Dis))
        {
            if (hit.collider.tag == "Player")
                SceneManager.LoadScene(2);

            GetComponent<LineRenderer>().SetPosition(0, transform.position);
            GetComponent<LineRenderer>().SetPosition(1, hit.point);
            luzColosao.transform.position = hit.point - pos;

            Debug.DrawRay(transform.position, transform.forward, Color.green);
        }
        else
        {
            GetComponent<LineRenderer>().SetPosition(0, transform.position);
            GetComponent<LineRenderer>().SetPosition(1, Point);
            luzColosao.transform.position = Point;

            Debug.DrawRay(transform.position, transform.forward, Color.red);
        }
    }
Другие вопросы по тегам