• 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 }
  • 相关阅读:
    十天学会php之第一天
    学习PHP的一些经验
    PHP中的数据类型(1)
    PHP中的常量
    赵凡导师并发知识第一次分享观后感
    面向对象之 __setitem__()、__getitem__()、__delitem__() 用法
    spider数据抓取(第二章)
    识别网站所用技术
    scrapy安装要求
    基于bs4的防止xss攻击,过滤script标签
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/14928822.html
Copyright © 2020-2023  润新知