103.2707
108.5588
12.12.2024
03:58:04

Как с помощью луча 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);
      }
    }
  }
}

Этот код выполняет следующие действия:

  1. В методе Start() получает ссылку на основную камеру с помощью Camera.main .

  2. В прошлом методе Update() была нажата левая кнопка мыши ( Input.GetMouseButtonDown(0) ).

  3. Создает луч ( Ray ) из мышиной позиции с помощью mainCamera.ScreenPointToRay(Input.mousePosition) .

  4. Затем проведите лучевую проверку с использованием Physics.Raycast(ray, out hit) , которая впоследствии столкнет объект с объектами на сцене.

  5. Если луч встретился с каким-либо объектом, то hit.collider.gameObject он содержит ссылку на этот объект, и вы можете выполнить действие с ним.

Обратите внимание, что для успешной работоспособности этого кода необходимо, чтобы объекты на сцене имели коллайдеры (например, BoxCollider или SphereCollider), так как лучевое последнее столкновение с коллайдерами.

28.09.2023 12:06

Лента статей

Наверх