Camera.ScreenToWorldPoint
Declaration
public Vector3 ScreenToWorldPoint(Vector3 position);public Vector3 ScreenToWorldPoint(Vector3 position, Camera.MonoOrStereoscopicEye eye);Параметры
| Параметр | Описание |
|---|---|
| должность | Точка пространства экрана 2D в пикселях, плюс координата z для расстояния от камеры в единицах мира. Нижний левый пиксель экрана (0,0). Верхний правый пиксель экрана (ширина экрана в пикселях — 1, высота экрана в пикселях — 1). |
| глаз | По умолчанию, Camera.MonoOrStereoscopicEye.Mono. Может быть установлено на Camera.MonoOrStereoscopicEye.Left или Camera.MonoOrStereoscopicEye.Right для использования в стереоскопическом отображении (e.g., для VR). |
Возвращаемое значение
Vector3 Точка мирового пространства, созданная путем преобразования точки экранного пространства на указанном расстоянии z от плоскости камеры.
Описание
Преобразует точку из экранного пространства в мировое пространство, где мировое пространство определяется как система координат на самом верху иерархии вашей игры.
Координаты мирового пространства могут быть рассчитаны даже в случае, если они предоставлены как внеэкранные координаты, например, для инстанционирования внеэкранного объекта вблизи определенного угла экрана.
Чтобы убедиться, что точка мирового пространства является частью объема зрения камеры, указанная вами координата z должна находиться между nearClipPlane и farClipPlaneкамеры.
// Convert the 2D position of the mouse into a // 3D position. Display these on the game window.
using UnityEngine;
public class ExampleClass : MonoBehaviour { private Camera cam;
void Start() { cam = Camera.main; }
void OnGUI() { Vector3 point = new Vector3(); Event currentEvent = Event.current; Vector2 mousePos = new Vector2();
// Get the mouse position from Event. // Note that the y position from Event is inverted. mousePos.x = currentEvent.mousePosition.x; mousePos.y = cam.pixelHeight - currentEvent.mousePosition.y;
point = cam.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, cam.nearClipPlane));
GUILayout.BeginArea(new Rect(20, 20, 250, 120)); GUILayout.Label("Screen pixels: " + cam.pixelWidth + ":" + cam.pixelHeight); GUILayout.Label("Mouse position: " + mousePos); GUILayout.Label("World position: " + point.ToString("F3")); GUILayout.EndArea(); } }