0

我有这个激光代码,我想在激光接触玩家时加载一个新场景。此脚本不起作用,我很乐意为您提供帮助!:)

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

1 回答 1

0


您的代码似乎一切正常。用于Debug.Draw检查您的 Raycast 方向。此功能将绘制一条与 Raycast 在编辑器中的路径完全相同的线。如果这条线正确地击中了玩家,那么你必须检查你的条件。在此处阅读统一手册

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);
        }
    }
于 2020-05-24T09:30:36.933 回答