Version: 2023.2

Camera.ScreenToWorldPoint

切换到手册
public Vector3 ScreenToWorldPoint (Vector3 position);
public Vector3 ScreenToWorldPoint (Vector3 position, Camera.MonoOrStereoscopicEye eye);

参数

position A 2D screenspace point in pixels, plus a z coordinate for the distance from the camera in world units. The lower left pixel of the screen is (0,0). The upper right pixel of the screen is (screen width in pixels - 1, screen height in pixels - 1).
eye 默认为 Camera.MonoOrStereoscopicEye.Mono。可设置为 Camera.MonoOrStereoscopicEye.LeftCamera.MonoOrStereoscopicEye.Right,以用于立体渲染(例如,用于 VR)。

返回

Vector3 The world space point created by converting the screen space point at the provided distance z from the camera plane.

描述

将点从屏幕空间变换为世界空间。其中,世界空间定义为位于游戏层级视图最顶层的坐标系统。

即使以离屏坐标的形式提供时,仍可计算世界空间坐标,例如,用于实例化靠近屏幕特定角的离屏对象。

To make sure the world space point is part of the camera's view volume, the z coordinate you provide must be between the camera's nearClipPlane and 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(); } }