using UnityEngine; using System.Collections; public class MovieBillboard : MonoBehaviour { private MovieTexture slide; Renderer ren; Transform player; public string fileName = "BombFactory.ogg"; bool downloaded = false; void Awake () { player = GameObject.FindGameObjectWithTag("Player").transform; ren = transform.GetComponentInChildren(); this.useGUILayout = false; InvokeRepeating("CheckPlayerDistance", 5, 5); StartCoroutine(StreamMovie()); } IEnumerator StreamMovie(){ /*string extra = "Movies/"; if (Application.isWebPlayer) { extra = Application.dataPath + "/Movies/"; } #if UNITY_EDITOR extra = "Movies/"; #endif*/ string url = "file://"+fileName; if (Application.isWebPlayer) { url = Application.dataPath+"/"+ fileName; } Debug.Log("About to stream: "+url); WWW www = new WWW(url); while (!www.isDone) { yield return 0; } if (www.error!=null) { Debug.LogError("Movie DL error:"+www.error); yield break; } Debug.Log("Veder "+url+" "+www.error); MovieTexture movieTexture = www.movie; while (!movieTexture.isReadyToPlay) { yield return 0; } ren.materials[1].mainTexture = slide = movieTexture; slide.loop = true; downloaded = true; Debug.Log("Downloaded " + url); } void OnGUI() { if (!downloaded) return; if (visible) { if (Time.frameCount <= 5) displayPercent = 1; displayPercent += Time.deltaTime * 3; } else if (displayPercent > 0) { displayPercent -= Time.deltaTime * 3; } if (displayPercent > 0) { displayPercent = Mathf.Clamp01(displayPercent); float w = Screen.width * displayPercent; float h = Screen.height * displayPercent; Rect rect = new Rect((Screen.width / 2 - w / 2), (Screen.height / 2 - h / 2), w, h); GUI.DrawTexture(rect, slide, ScaleMode.ScaleToFit); } } private bool visible = false; private float displayPercent = 0; void OnTriggerEnter (Collider other ) { if (downloaded && other.transform.tag == "Player") { //slide.audioClip. displayPercent = 0; visible = true; } } void OnTriggerExit(Collider other) { if (downloaded && other.transform.tag == "Player") { // slide.Pause(); visible = false; } } void CheckPlayerDistance() { if (!downloaded) return; if (Vector3.Distance(transform.position, player.position) <= 20) { slide.Play(); slide.loop = true; } else { slide.Stop(); } } }