Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Plane.Raycast

Объявление

public bool Raycast(Ray ray, out float enter);

Описание

Пересекает луч с плоскостью.

Эта функция задает enter расстояние вдоль луча, где он пересекает плоскость. Если луч параллелен плоскости, функция возвращает false и устанавливает enter в ноль. Если луч указывает в направлении, противоположном направлению плоскости, функция возвращает false/ и устанавливает enter на расстояние вдоль луча. (отрицательное значение).

//Этот скрипт обнаруживает щелчки мыши на плоскости с помощью Plane.Raycast. //В этом примере плоскость установлена в положение Камеры по осям x и y, но вы можете установить положение по z так, чтобы плоскость находилась перед вашим Камера. // Нормаль плоскости настроена так, чтобы быть обращенной вперед, поэтому она обращена к Камере, но вы можете изменить это в соответствии со своими потребностями. //В Инспекторе GameObject установите расстояние, на которое можно щелкнуть, и прикрепите куб GameObject в соответствующих полях using UnityEngine; public class PlaneRayExample : MonoBehaviour { //Attach a cube GameObject in the Inspector before entering Play Mode public GameObject m_Cube; //This is the distance the clickable plane is from the camera. Set it in the Inspector before running. public float m_DistanceZ; Plane m_Plane; Vector3 m_DistanceFromCamera; void Start() { //This is how far away from the Camera the plane is placed m_DistanceFromCamera = new Vector3(Camera.main.transform.position.x, Camera.main.transform.position.y, Camera.main.transform.position.z - m_DistanceZ); //Create a new plane with normal (0,0,1) at the position away from the camera you define in the Inspector. This is the plane that you can click so make sure it is reachable. m_Plane = new Plane(Vector3.forward, m_DistanceFromCamera); } void Update() { //Detect when there is a mouse click if (Input.GetMouseButton(0)) { //Create a ray from the Mouse click position Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //Initialise the enter variable float enter = 0.0f; if (m_Plane.Raycast(ray, out enter)) { //Get the point that is clicked Vector3 hitPoint = ray.GetPoint(enter); //Move your cube GameObject to the point where you clicked m_Cube.transform.position = hitPoint; } } } }

Смотрите так же: Physics.Raycast.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3