我有一段激光的代码,我想在激光接触玩家的时候加载一个新的场景,这个脚本不工作,我很高兴得到你的帮助! :)
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;
}
}
看起来你的代码一切正常。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);
}
}