视口坐标转换成Canvas下本地坐标与shader显示在3D物体前

     shader显示在3D物体前,先转化成视口坐标

  public virtual void SetESignPos()
        {
            float x = 0;

            float y = 0;

            int v = PlayerPrefsTool.GetSpecialScreen(-1);

            if (EScreenCamera != null)
            {
                Vector3 viewPoint=EScreenCamera.WorldToViewportPoint(CurENeedShowPosition);

                Logger.Log($"SetESignPos viewPoint:{viewPoint},{viewPoint.x*Screen.width},{viewPoint.y*Screen.height}");

                x = viewPoint.x * Screen.width;

                y = viewPoint.y * Screen.height;
            }
            else
            {
                Vector2 screenPos = RectTransformUtility.WorldToScreenPoint(mE_f.canvas.worldCamera, CurENeedShowPosition);

                x = screenPos.x;

                y = screenPos.y;
            }

            if (v == -1)//正常屏幕
            {
                y = Screen.height - y;
            }

            mESignMaterial.SetVector("_LP1", new Vector4(x, y, mESignMaterialVector4.z, mESignMaterialVector4.w));
        }

视口坐标转换成Canvas下本地坐标

using UnityEngine;
using UnityEngine.UI;

public class ViewportToCanvasCoordinates : MonoBehaviour
{
    public RectTransform canvasRect;

    void Update()
    {
        // 设置一个示例的视口坐标
        Vector3 viewportPoint = new Vector3(0.5f, 0.5f, 0);

        // 获取主摄像机
        Camera mainCamera = Camera.main;

        if (mainCamera != null)
        {
            // 使用主摄像机的方法将视口坐标转换为屏幕坐标
            Vector3 screenPoint = mainCamera.ViewportToScreenPoint(viewportPoint);

            // 将屏幕坐标转换为 UI 中的 Canvas 坐标
            Vector2 localPoint;
            RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, screenPoint, mainCamera, out localPoint);

            // 打印 UI 中的 Canvas 坐标
            Debug.Log("UI Canvas Local Point: " + localPoint);
        }
    }
}
 

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 07:00:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 07:00:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 07:00:03       82 阅读
  4. Python语言-面向对象

    2024-03-18 07:00:03       91 阅读

热门阅读

  1. 利用卷积神经网络进行人脸识别

    2024-03-18 07:00:03       49 阅读
  2. microk8s使用本地库的镜像部署服务

    2024-03-18 07:00:03       40 阅读
  3. Mapper.xml映射文件

    2024-03-18 07:00:03       41 阅读
  4. 蓝桥杯day3刷题日记--P9240 冶炼金属

    2024-03-18 07:00:03       34 阅读
  5. python request pandas excel 接口自动化测试框架

    2024-03-18 07:00:03       39 阅读
  6. 【XML】xml转Freemind思维导图

    2024-03-18 07:00:03       35 阅读
  7. string和stringbuilder

    2024-03-18 07:00:03       44 阅读
  8. Unity转换字符串中文繁简体

    2024-03-18 07:00:03       41 阅读
  9. python图形化编程turtle小乌龟

    2024-03-18 07:00:03       39 阅读