Esempio n. 1
0
    private void HideOccluders()
    {
        float toCamLength = (Camera.main.transform.position - transform.position).magnitude;
        Ray   ray         = new Ray(transform.position, -Vector3.forward);

        RaycastHit[] results = Physics.RaycastAll(ray, toCamLength);
        foreach (RaycastHit result in results)
        {
            Transform parent = result.transform.gameObject.transform.parent;
            if (parent != null)
            {
                for (int i = 0; i < parent.childCount; ++i)
                {
                    GameObject            child     = parent.GetChild(i).gameObject;
                    OcclusionTransparency occlusion = child.GetComponent <OcclusionTransparency>();
                    if (child == result.transform.gameObject || occlusion != null && occlusion.IsChainable)
                    {
                        SetTransparency(parent.GetChild(i).gameObject);
                    }
                }
            }
            else
            {
                SetTransparency(result.transform.gameObject);
            }
        }
    }
Esempio n. 2
0
    private void SetTransparency(GameObject gameObject)
    {
        SpriteRenderer occluder = gameObject.renderer as SpriteRenderer;

        if (occluder == null)
        {
            return;
        }

        OcclusionTransparency config = gameObject.GetComponent <OcclusionTransparency>();

        Color oldColor = occluder.color;

        occluder.color = new Color(oldColor.r, oldColor.g, oldColor.b, config.AlphaAmount);

        config.IsTransparent = true;
    }