Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Como detectar si un objeto esta siendo renderizado por una camara especifica

Iniciado por Jorge Alejandro, Enero 01, 2016, 04:18:46 PM

Tema anterior - Siguiente tema
Cuando quiero saber si un objeto esta siendo renderizado por una camera en especifico uso este script que saque de la UnityWiki:using UnityEngine;
 
public static class RendererExtensions
{
    public static bool IsVisibleFrom(this Renderer renderer, Camera camera)
    {
        Plane[] planes = GeometryUtility.CalculateFrustumPlanes(camera);
        return GeometryUtility.TestPlanesAABB(planes, renderer.bounds);
    }
}el gran problema de este codigo es que aunque el objeto (que deseo saber si se esta renderizando por una camara) esta atras de otro, y no se ve,este codigo me debuelve que la camara si lo esta viendo.

Utilizando el evento OnWillRenderObject:
using UnityEngine;
using System.Collections.Generic;

public class script2 : MonoBehaviour {

public string[] nombreCamaras;

List<string> camaras = new List<string>();

void Update(){

   this.nombreCamaras = this.camaras.ToArray();
   this.camaras.Clear();

}

void OnWillRenderObject() {

   this.camaras.Add(Camera.current.name);

}


}
 

Etiquetas: