106. CLASE GIZMOS



Los Gizmos son usados para permitir un debug visual o bien para colocar ayudas en la vista de escena.

Todos los gizmos deben ser dibujados o con la función OnDrawGizmos o con la función. OnDrawGizmosSelected. La diferencia de ambas es que:

OnDrawGizmos es llamada cada frame.
OnDrawGizmosSelected es llamada sólo si el objeto al cual está vinculado el script es seleccionado.


VARIABLES DE CLASE:

color:

static var color : Color


Establece el color para los gizmos que serán dibujados a continuación.

Vamos a hacer un pequeño ejemplo. Aseguráos de que MiPrimerScript sigue estando vinculado a la esfera, y acto seguido deseleccionar cualquier gameobject haciendo click en un espacio vacío de la Jerarquía. Comprobamos que en la vista game tengamos marcada la pestaña Gizmos. Escribimos:


function OnDrawGizmosSelected () {
Gizmos.color = Color.blue;
var direction : Vector3 = transform.TransformDirection (Vector3.forward) * 5;
Gizmos.DrawRay (transform.position, direction);
}


Le damos al play y no parece ocurrir nada. Esto es porque estamos llamando a la función OnDrawGizmosSelected, que sólo muestra el dibujo cuando seleccionamos el objeto al cual va vinculado el script, así que en la jerarquía seleccionamos la esfera y automáticamente nos debería aparecer una línea de color azul que va desde la posición del transform de la esfera cinco metros en adelante.


FUNCIONES DE CLASE:

DrawRay:

static function DrawRay (r : Ray) : void
static function DrawRay (from : Vector3, direction : Vector3) : void

Dibuja un rayo que empieza desde from hasta from + direction. Lo hemos visto en funcionamiento en el ejemplo anterior.


DrawWireSphere:

static function DrawWireSphere (center : Vector3, radius : float) : void


Dibuja una esfera de alambre con centro y radio.


var radio = 2.0;

function OnDrawGizmos() {
Gizmos.color = Color.cyan;
Gizmos.DrawWireSphere (transform.position, radio);
}


Meramente como apunte, aquí la esfera de alambre se ve tengamos o no seleccionado el game object esfera, porque la hemos dibujado con la función OnDrawGizmos.


DrawSphere:

static function DrawSphere (center : Vector3, radius : float) : void


Dibuja una esfera sólida con centro y radio.


DrawWireCube:

static function DrawWireCube (center : Vector3, size : Vector3) : void


Dibuja una caja de alambre con centro y tamaño.


DrawCube:

static function DrawCube (center : Vector3, size : Vector3) : void


Dibuja una caja sólida con centro y tamaño.


DrawIcon:

static function DrawIcon (center : Vector3, name : String) : void

Dibuja un icono en posición global en la vista de escena. El icono deberá tener el mismo nombre que le asignamos al parámetro name y estará ubicado en las coordenadas que le pasemos al parámetro center. El path del icono puede encontrarse en la carpeta Assets/Gizmos.

Vamos por partes: Antes que nada necesitamos una imagen tipo icono. Yo para el ejemplo he usado ésta.

Renombramos a la imagen como "nave". Por otro lado, en el archivo donde estamos guardando estos ejemplos, dentro de la carpeta assets, hemos de crear una carpeta llamada Gizmos, que es el path que Unity buscará para dar con los iconos de este tipo. Luego arrastramos nuestra nave a la recién creada carpeta.

Y ahora editamos el script:


function OnDrawGizmos () {
Gizmos.DrawIcon (transform.position + Vector3(0,2,0), "nave.png");
}


Pulsamos el play, y dos metros por encima de nuestra esfera debería aparecernos la nave, tal que así:




DrawGUITexture:

static function DrawGUITexture (screenRect : Rect, texture : Texture, mat : Material = null) : void
static function DrawGUITexture (screenRect : Rect, texture : Texture, leftBorder : int, rightBorder : int, topBorder : int, bottomBorder : int, mat : Material = null) : void


Dibuja una textura en coordenadas de pantalla. Es útil para backgrounds de GUI.

POSTED BY UnityScripts
POSTED IN
DISCUSSION 0 Comments

Leave a Reply

Con la tecnología de Blogger.