UnityEngine.Camera.ScreenToViewportPoint C# (CSharp) Method

ScreenToViewportPoint() public method

Transforms position from screen space into viewport space.

public ScreenToViewportPoint ( Vector3 position ) : Vector3
position Vector3
return Vector3
        public Vector3 ScreenToViewportPoint(Vector3 position)
        {
            Vector3 vector;
            INTERNAL_CALL_ScreenToViewportPoint(this, ref position, out vector);
            return vector;
        }

Usage Example

コード例 #1
0
        public static bool GetVisiblePointUnderCursor(
            Vector3[] vertices,
            Transform meshTransform,
            UnityEngine.Camera camera,
            Vector3 mousePos,
            float accuracy,
            out Vector2 screenVertex,
            out Vector3 worldVertex)
        {
            CustomSampler s  = CustomSampler.Create("point-search");
            CustomSampler s2 = CustomSampler.Create("point-raycast");

            s.Begin();
            float   minDist           = float.MaxValue;
            Vector3 closetsPoint      = Vector3.zero;
            var     worldMatrix       = meshTransform.localToWorldMatrix;
            var     screenMatrix      = camera.projectionMatrix * camera.worldToCameraMatrix;
            var     mousePosViewSpace = camera.ScreenToViewportPoint(mousePos);
            var     accuracyViewSpace = camera.ScreenToViewportPoint(new Vector3(accuracy, 0, 0)).x;

            for (int n = 0; n < vertices.Length; n++)
            {
                var worldPoint  = worldMatrix.MultiplyPoint(vertices[n]);
                var screenPoint = camera.WorldToScreenPoint(worldPoint);
                //var screenPoint = screenMatrix.MultiplyPoint(worldPoint);
                //var distVect = screenPoint - mousePos;
                var distVect = screenPoint - mousePos;
                distVect.z = 0;
                if (distVect.magnitude <= accuracy)
                {
                    var dist = (worldPoint - camera.transform.position).magnitude;
                    if (dist < minDist)
                    {
                        minDist      = dist;
                        closetsPoint = worldPoint;
                    }
                }
            }
            s.End();
            s2.Begin();
            if (CheckVertexVisibility(closetsPoint, camera, mousePos))
            {
                var screenPoint = camera.WorldToScreenPoint(closetsPoint);
                screenVertex = new Vector2(screenPoint.x, screenPoint.y);
                worldVertex  = closetsPoint;
                return(true);
            }
            s2.End();

            screenVertex = Vector2.zero;
            worldVertex  = Vector3.zero;
            return(false);
        }
All Usage Examples Of UnityEngine.Camera::ScreenToViewportPoint
Camera