文章

俯视视角游戏高效检测视野边缘的方法

俯视视角游戏高效检测视野边缘的方法

通过在初始时遍历屏幕左下、左上、右上、右下四个点,分别从屏幕发出一条射线,即可获得与地面平面碰撞的四个交点,这四个点构成的平面就是视野范围。如果地面是近似无限的平面,那么把从摄像机初始到当前的位置向量,分别加上与这四个点的偏移,就可以得到当前的摄像机视野范围。假设这四个点围成的线段长度为l1,l2,l3,l4,总长度为L,那么可以求得落在视野边缘的随机一点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public void Start()
{
    Vector3[] iniWidePos;
    iniWidePos = new Vector3[4];
    iniWidePos[0].x = 0;
    iniWidePos[0].y = 0;
    iniWidePos[1].x = 0;
    iniWidePos[1].y = Screen.height;
    iniWidePos[2].x = Screen.width;
    iniWidePos[2].y = Screen.height;
    iniWidePos[3].x = Screen.width;
    iniWidePos[3].y = 0;
    for (int i = 0; i < iniWidePos.Length; i++)
    {
        Ray ray = Camera.main.ScreenPointToRay(iniWidePos[i]);
        if (Physics.Raycast(ray, out var hit))
        {
            //Debug.DrawLine(ray.origin, hit.point, Color.red, intMaxValue);
            iniWidePos[i] = hit.point;
        }
    }
}
本文由作者按照 CC BY 4.0 进行授权