В объект попал луч - единство
У меня есть этот код для лазера, я хочу загрузить новую сцену, когда лазер касается игрока. этот скрипт не работает, буду рад вашей помощи!:)
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);
}
}