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); } } }
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; }