Quantcast
Channel: Answers by "JoeHarry"
Viewing all articles
Browse latest Browse all 4

Answer by JoeHarry

$
0
0
Even though this is a very old question I'll post my solution in case anyone in the future has the same problem... Rather than trying to change the clipping plane of the water reflection (which seems impossible) I created a new layer called Reflection Layer and set the water plane to reflect this layer only. Then game objects can be added or removed from the reflection layer depending on how close the player is. Here is a quick script I wrote for that... using UnityEngine; using System.Collections; public class ChangeLayer : MonoBehaviour { public Transform character; //add the player game object in inspector private Transform cachedTransform; private float dist; // Use this for initialization void Start () { cachedTransform = transform; //cache the player position dist = Vector3.Distance(character.position, cachedTransform.position); //calculate distance between object and player StartCoroutine(CheckDistance()); } IEnumerator CheckDistance() { while(true) { dist = Vector3.Distance(character.position, cachedTransform.position); //calculate distance between object and player if(dist < 60) //If player is close enough to game object gameObject.layer = LayerMask.NameToLayer("Reflection Layer"); //Add to reflection layer else //If not close gameObject.layer = LayerMask.NameToLayer("Default"); //Add to default layer yield return new WaitForSeconds(0.3f); } } } The script has to be added to every game object that you want to be reflected... so if you have hundreds of game objects there may be a better way but this works perfectly for me. Cheers, Joe

Viewing all articles
Browse latest Browse all 4

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>