Quantcast
Viewing all articles
Browse latest Browse all 34

Answer by luniac

#pragma strict var shadowProjector : Projector; // the shadow projector var shadowDistanceTolerance : float = 0.5; // positive number used to cast shadow on terrains correctly private var hit : RaycastHit; private var dist : float; private var origNearClipPlane : float; private var origFarClipPlane : float; private var ray : Ray; function Start() { if(!shadowProjector) shadowProjector = transform.GetComponentInChildren.(); origNearClipPlane = shadowProjector.nearClipPlane; origFarClipPlane = shadowProjector.farClipPlane; } function Update() { ray = new Ray(shadowProjector.transform.position + shadowProjector.transform.forward.normalized * origNearClipPlane, shadowProjector.transform.forward); if (Physics.Raycast (ray, hit, origFarClipPlane - origNearClipPlane, ~shadowProjector.ignoreLayers)) { dist = hit.distance + origNearClipPlane; Debug.Log(dist); //shadowProjector.nearClipPlane = Mathf.Max(dist - shadowDistanceTolerance, 12); //dist = 12 for large ball if(dist >= 12) shadowProjector.nearClipPlane = 15;//value higher than 12 else shadowProjector.nearClipPlane = origNearClipPlane; shadowProjector.farClipPlane = dist + shadowDistanceTolerance; //Debug.Log("Ray hit at: " + hit.point + ", distance: " + dist); } }

Viewing all articles
Browse latest Browse all 34

Trending Articles