一个物体被光束击中了----------------------------------------------------------------------统一

问题描述 投票:-1回答:1

我有一段激光的代码,我想在激光接触玩家的时候加载一个新的场景,这个脚本不工作,我很高兴得到你的帮助! :)

 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;
        }
    }
unity3d raycasting gameobject qvector3d
1个回答
0
投票

看起来你的代码一切正常。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);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.