Unity detecta si un objeto está ocluido

private bool IsObjectOccluded(GameObject obj)
    {
    
    
        // 获取摄像机到物体的方向
        Vector3 directionToTarget = obj.transform.position - Camera.main.transform.position;

        // 发射射线
        Ray ray = new Ray(Camera.main.transform.position, directionToTarget);
        RaycastHit hit;

        // 射线检测是否有其他碰撞器位于射线路径上
        if (Physics.Raycast(ray, out hit, directionToTarget.magnitude))
        {
    
    
            // 如果射线击中的物体不是目标物体,则表示目标物体被遮挡
            if (hit.collider.gameObject != obj)
            {
    
    
                return true;
            }
        }

        return false;
    }

Supongo que te gusta

Origin blog.csdn.net/weixin_44047050/article/details/131992429
Recomendado
Clasificación