Как с помощью луча Raycast получить игровой объект
Для получения GameObject с помощью луча (Raycast) в Unity вы можете использовать функцию из класса Physics . Вот пример того, как это можно сделать:
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
private Camera mainCamera; // Ссылка на основную камеру
private void Start()
{
// Получите ссылку на основную камеру
mainCamera = Camera.main;
}
private void Update()
{
// Проверьте, нажата ли левая кнопка мыши
if (Input.GetMouseButtonDown(0))
{
// Создайте луч из позиции мыши
Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition);
// Создайте переменную для хранения информации о столкновении
RaycastHit hit;
// Выполните лучевой тест (Raycast)
if (Physics.Raycast(ray, out hit))
{
// Проверьте, есть ли GameObject, с которым луч столкнулся
GameObject hitObject = hit.collider.gameObject;
// Выполните действия с объектом
Debug.Log("Попался объект: " + hitObject.name);
}
}
}
}
Этот код выполняет следующие действия:
-
В методе Start() получает ссылку на основную камеру с помощью Camera.main .
-
В прошлом методе Update() была нажата левая кнопка мыши ( Input.GetMouseButtonDown(0) ).
-
Создает луч ( Ray ) из мышиной позиции с помощью mainCamera.ScreenPointToRay(Input.mousePosition) .
-
Затем проведите лучевую проверку с использованием Physics.Raycast(ray, out hit) , которая впоследствии столкнет объект с объектами на сцене.
-
Если луч встретился с каким-либо объектом, то hit.collider.gameObject он содержит ссылку на этот объект, и вы можете выполнить действие с ним.
Обратите внимание, что для успешной работоспособности этого кода необходимо, чтобы объекты на сцене имели коллайдеры (например, BoxCollider или SphereCollider), так как лучевое последнее столкновение с коллайдерами.