zoukankan      html  css  js  c++  java
  • Unity 判断2D/3D坐标系下的一个点是否在指定的摄像机视野范围内

     1 using UnityEngine;
     2 
     3 public partial class CommonFunction
     4 {
     5     /// <summary>
     6     /// 视口坐标系是将Game视图的屏幕坐标系单位化,左下角(0,0),右上角(1,1)
     7     /// 摄像机视口坐标系下的坐标范围
     8     /// </summary>
     9     static Rect viewRect = new Rect(0, 0, 1, 1);
    10 
    11     /// <summary>
    12     /// 以Game视图为准
    13     /// 判断2D坐标系下的一个点是否在指定的摄像机视野范围内
    14     /// 忽略z轴
    15     /// </summary>
    16     /// <param name="camera"></param>
    17     /// <param name="uiWorldPos"></param>
    18     /// <returns></returns>
    19     public static bool Is2DPointInsideCameraView(Camera camera, Vector3 uiWorldPos)
    20     {
    21         if (null == camera)
    22         {
    23             return false;
    24         }
    25 
    26         Vector3 viewPos = camera.WorldToViewportPoint(uiWorldPos);
    27         return viewRect.Contains(viewPos);
    28     }
    29 
    30     /// <summary>
    31     /// 以Game视图为准
    32     /// 判断3D坐标系下的一个点是否在指定的摄像机视野范围内
    33     /// </summary>
    34     /// <param name="camera"></param>
    35     /// <param name="worldPos"></param>
    36     /// <returns></returns>
    37     public static bool Is3DPointInsideCameraView(Camera camera, Vector3 worldPos)
    38     {
    39         if (null == camera)
    40         {
    41             return false;
    42         }
    43 
    44         //获取摄像机的六个平面
    45         Plane[] planes = GeometryUtility.CalculateFrustumPlanes(camera);
    46         for (int i = 0, iMax = planes.Length; i < iMax; ++i)
    47         {
    48             //判断一个点是否在平面的正方向
    49             if (!planes[i].GetSide(worldPos))
    50             {
    51                 return false;
    52             }
    53         }
    54 
    55         return true;
    56     }
    57 }
  • 相关阅读:
    洛古模拟赛--星空
    bzoj4476 [Jsoi2015]送礼物
    矩阵乘法总结
    bzoj 3167 SAO
    codeforces 671D
    10.28
    noip前集训
    10.2晚 模拟继续
    10.2 考试
    10.1 国庆 考试
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/14928822.html
Copyright © 2011-2022 走看看