El Super Libro Unity - 5 Cap 4.en - Es
El Super Libro Unity - 5 Cap 4.en - Es
El Super Libro Unity - 5 Cap 4.en - Es
7. Ahora que nos hemos ocupado de nuestras necesidades de transparencia, debemos trabajar en
Emisión mapa. Desde el Bienes carpeta, duplica la DIFF_package textura, cámbiale el nombre EMI_package,
y ábralo en su editor de imágenes.
8. Seleccione todos los personajes de la Sra. Laser inscripción y la estrella verde (en Photoshop, esto se puede
hacer con la herramienta Varita mágica, manteniendo la Cambio
pulsada mientras selecciona varias áreas).
9. Copie y pegue su selección en una nueva capa. Luego, selecciónelo y aplíquele un filtro de ruido (en
Photoshop, esto se puede hacer navegando a Filtro | Ruido Añadir ruido...).
Utilizar 50% como el valor.
10. Cree una nueva capa y, utilizando una herramienta como la Bote de pintura, llénalo de negro
(R: 0, GRAMO: 0, SEGUNDO: 0). Coloque esta capa negra debajo de la que tiene los elementos de color.
11. Aplanar la imagen (en Photoshop, esto se puede hacer navegando a Capa | Aplanar
Imagen) y guarde su archivo:
163
Crear mapas y materiales
13. Coloque una instancia del packagePrefab en tu escena y mira los resultados.
Tu material está listo:
Cómo funciona...
Unity puede leer cuatro canales de un mapa de textura: R (rojo), G (verde), B (azul) y A (alfa). Cuando se establece en Transparente
o Recorte, el canal Alfa del mapa de textura difusa establece la transparencia del material de acuerdo con el nivel de brillo de
cada píxel (el Separar el modo no renderizará semitransparencia, solo píxeles completamente visibles o invisibles). Es posible
que haya notado que no agregamos un canal Alpha; esto se debe a que Photoshop exporta el mapa Alpha del PNG, basado en
su transparencia. Para ayudarle a visualizar el mapa Alpha, el 1362_04_04 carpeta
164
Capítulo 4
contiene una DIFF_packageFinal.TIF archivo con un mapa Alpha que funciona exactamente de la misma manera que el archivo
PNG que hemos generado:
En cuanto al mapa de textura de Emisión, Unity asigna sus colores RGB al material, combinándolos con la ranura de
selección de color adecuada, y también permitiendo ajustes a la intensidad de esa Emisión.
Hay más...
165
Crear mapas y materiales
Preparándose
Para esta receta, usaremos objetos creados directamente en Unity. Alternativamente, puede utilizar cualquier modelo 3D que desee.
Cómo hacerlo...
2. Desde el Proyecto ver, haga clic en el Crear menú desplegable y elija Material.
Nombralo HighlightMaterial.
166
Capítulo 4
void Start () {
myRenderer = GetComponent <Renderer> ();
si (noEmissionAtStart)
initialColor = Color.black;
más
initialColor = myRenderer.material.GetColor ("_ EmissionColor");
}
void OnMouseEnter () {
mouseon = verdadero;
myRenderer.material.SetColor ("_
EmissionColor ", color de resaltado);
}
void OnMouseSalir () {
mouseon = falso;
myRenderer.material.SetColor ("_ EmissionColor", initialColor);
}
void OnMouseDown () {
myRenderer.material.SetColor ("_ EmissionColor",
mousedownColor);
}
void OnMouseUp () {
si (mouseon)
myRenderer.material.SetColor ("_ EmissionColor",
resaltarColor);
más
myRenderer.material.SetColor ("_ EmissionColor", initialColor);
}
}
8. Seleccione el Cubo, y en el Inspector ver, establecer el Resaltar color y Ratón hacia abajo
Color valores a cualquier color que desee:
167
Crear mapas y materiales
9. Si está utilizando el script con su propia malla 3D importada, asegúrese de agregar un Colisionador
componente a su objeto.
10. Pruebe la escena. los Cubo se resaltará en rojo cuando el mouse esté sobre él
(y verde cuando se hace clic en él).
Cómo funciona...
Al cubo se le envían automáticamente los eventos de entrada / salida / abajo / arriba del mouse cuando el usuario mueve el puntero
del mouse sobre y alejándose de la parte de la pantalla donde el cubo es visible. Nuestro script agrega un comportamiento al cubo
cuando se detectan estos eventos. los Comienzo() El método obtiene una referencia al Renderizador componente del GameObject al
que se ha agregado el script y lo almacena en la variable myRenderer ( tenga en cuenta que 'renderizador' ya tiene un significado en
Unity, por lo que no es apropiado como nombre de variable privada para este script). La variable booleana llamada mouseon registra si
el puntero del mouse se encuentra actualmente sobre el objeto o no. Cuando se suelta el botón del mouse, usamos el mouseon variable
para decidir si cambiar el cubo a su color inicial ( mouseon FALSO, por lo que el puntero del mouse está lejos del cubo), o de regreso a
su color de resaltado ( mouseon VERDADERO, por lo que el puntero del mouse está sobre el cubo).
La razón por la que necesitábamos cambiar el original del material Emisión color a gris ultra oscuro es que dejarlo en
negro habría provocado que Unity optimizara el Shader al eliminar el
Emisión propiedad del material. Nuestro guión no habría funcionado si esto hubiera sucedido.
Hay más...
Puede lograr otros resultados interesantes cambiando las otras propiedades de su material (cambiando el _ EmisiónColor
guión a _ Color o "_ SpecularColor, por ejemplo). Para obtener una lista completa de propiedades, seleccione su material
y, en el Inspector ver, haga clic en el Editar
botón, al lado del Shader Menú desplegable.
168
Capítulo 4
Preparándose
Para esta receta, hemos preparado un paquete Unity, que contiene el prefabricado para un cohete de juguete. La casa
prefabricada incluye el modelo 3D y un material, con un mapa difuso y un mapa normal (hecho a partir de un mapa de altura). El
archivo se puede encontrar en el 1362_04_06 carpeta.
Cómo hacerlo...
2. Desde el Jerarquía ver, expandir el cohete GameObject y seleccione su hijo llamado rocketLevel1. Luego,
desplácese hacia abajo en el Inspector ver a la Material
componente. Observe que usa el DIFF_ship textura como la Difuso mapa. Duplique este archivo y cambie
el nombre de la nueva copia COPY_ship.
3. Abierto COPY_ship en su editor de imágenes. Seleccione todos los píxeles verdes sólidos alrededor del logotipo y el
compartimento de la batería (en Photoshop, esto se puede hacer con la herramienta Varita mágica, manteniendo la Cambio tecla
169
Crear mapas y materiales
7. Ahora que tenemos la máscara, creemos un mapa difuso para nuestro detalle. En su editor de imágenes, cree una nueva
imagen con las siguientes dimensiones: anchura: 64, y altura: 64.
170
Capítulo 4
8. Rellena la nueva imagen con gris (R, G y B: 128). Luego, use formas o rellenos rectangulares para
crea un gris oscuro (R, G y B: 100) línea horizontal de unos 16 píxeles de alto:
10. Cree una nueva imagen de 64 x 64. Utilizar una Degradado herramienta para crear un blanco y negro Radial
Degradado ( en Photoshop, esto se puede hacer con el Degradado Herramienta en Radial modo):
171
Crear mapas y materiales
14. En el Mapas secundarios sección, cambie el Embaldosado valores a X: 200, y Y: 50. usted
podría notar que el patrón no es perfecto. Esto se debe a que estamos usando el mismo Conjunto UV de
nuestro Difuso textura. Sin embargo, el objeto se ha asignado a dos Canales UV ( cuando se estaba
modelando). Mientras que el canal UV 1 contiene el mapeo de nuestro Difuso mapa, el canal UV 2 utiliza un
mapeo cilíndrico básico. Necesitamos cambiar el Mapas secundarios sección Conjunto UV desde UV0 a
Cómo funciona...
Cuando esté en uso, Mapas secundarios se mezclan en el primario del material Difuso y Normal
mapas (es por eso que nuestro objeto es verde incluso después de la Detalle difuso se aplica: los tonos grises se superponen
sobre el original Difuso textura). Usando un Máscara de detalle, el artista define qué áreas del objeto deben verse afectadas por los
mapas secundarios. Esto es excelente para la personalización y también para crear matices (como el compartimiento de la batería
semi-golpeado en nuestro ejemplo).
Otra característica útil es la posibilidad de utilizar un canal UV independiente para mapas de detalles y mosaicos. Además de
agregar variación al mapeo de texturas, esto nos permite pintar los detalles que se pueden percibir incluso a una distancia muy
cercana al mejorar dramáticamente la calidad visual de nuestros objetos.
172
Capítulo 4
Cómo hacerlo...
2. Selecciona el Esfera y asegúrese de que tenga un colisionador (si está utilizando un objeto 3D personalizado, es posible que
deba agregar un colisionador a través del Componentes | Física menú).
3. Crea un nuevo material. La forma más sencilla de hacerlo es acceder al Proyecto ver, haga clic en el Crear
menú desplegable y elija Material.
5. Seleccione su material. Desde el Inspector vista, use el menú desplegable para cambiar su Modo de renderizado a Desvanecerse:
los Desvanecerse El modo de renderizado está diseñado específicamente para situaciones como esta.
Otros modos de renderizado, como Transparente, harán que el color del Albedo se vuelva
transparente, pero no los reflejos ni los reflejos, en cuyo caso el objeto seguirá siendo visible.
7. Desde el Proyecto ver, haga clic en el Crear menú desplegable y elija Secuencia de comandos de C #.
173
Crear mapas y materiales
usando UnityEngine;
usando System.Collections;
public class FadeMaterial: MonoBehaviour {
public float fadeDuration = 1.0f; public bool useMaterialAlpha =
false; public float alphaStart = 1.0f; public float alphaEnd = 0.0f;
void Start () {
rend = GetComponent <Renderer> ();
fadeColor = rend.material.color;
if (! useMaterialAlpha) {
fadeColor.a = alphaStart;
} más {
alphaStart = fadeColor.a;
}
rend.material.color = fadeColor;
alphaDiff = alphaStart - alphaEnd;
}
Void Update () {
if (isFading) {
var elapsedTime = Time.time - startTime;
} más {
fadeColor.a = alphaEnd;
rend.material.color = fadeColor;
si (destroyInvisibleObject)
Destruir (gameObject);
174
Capítulo 4
isFading = falso;
}
}
}
void OnMouseUp () {
FadeAlpha ();
}
10. Reproduzca su escena y haga clic en el Esfera para verlo desvanecerse y autodestruirse.
Cómo funciona...
Dado que la opacidad del material con un Shader transparente está determinada por el valor alfa de su color principal, todo lo que
tenemos que hacer para desvanecerlo es cambiar ese valor durante un período de tiempo determinado. Esta transformación se
expresa, en nuestro script, en las siguientes líneas de código:
Hay más...
Televisores, proyectores, monitores ... Si quieres materiales animados complejos en tu nivel, puedes reproducir archivos de vídeo como
mapas de textura. En esta receta, aprenderemos cómo aplicar una textura de video a un cubo. También implementaremos un esquema
de control simple que reproduce o pausa el video cada vez que se hace clic en ese cubo.
175
Crear mapas y materiales
Preparándose
Además, si necesita un archivo de video para seguir esta receta, utilice el videoTexture.mov
incluido en la carpeta 1632_04_08.
Cómo hacerlo...
3. Desde el Proyecto ver, use el Crear menú desplegable para crear un nuevo
Material. Cambiarle el nombre Video_MAT y, desde el Inspector ver, cambiar su
Shader a Apagado / Textura:
6. Expandir videoTexture sobre el Proyecto vista para revelar su corresponsal Segmento de audio.
Luego, aplique ese clip de audio al Cubo ( puedes hacerlo arrastrándolo desde el Proyecto
ver a la Cubo en el Jerarquía vista, o una Escena ver).
176
Capítulo 4
7. Selecciona el Cubo. Asegúrese de que haya un Colisionador componente visible desde el Inspector
ver. En caso de que no haya uno, agréguelo a través del Componente | Física | Colisionador de cajas
8. Ahora necesitamos crear un script para controlar la textura de la película y el clip de audio asociado. Desde Proyecto ver, use el Crear menú
Reproduce el video.
void Start () {
audio = GetComponent <AudioSource> ();
si (! video)
video = GetComponent <Renderer> () .material.mainTexture como MovieTexture;
si (! audioClip)
audioClip = audio.clip;
video.Stop ();
audio.Stop ();
video.loop = loop;
audio.loop = bucle;
si (playFromStart)
ControlMovie ();
}
void OnMouseUp () {
ControlMovie ();
}
177
Crear mapas y materiales
if (video.isPlaying) {
video.Pause ();
audio.Pause ();
} más {
video.Play ();
audio.Play ();
}
}
}
11. Pon a prueba tu escena. Debería poder ver la película que se está reproduciendo en la cara del cubo y también pausarla / reproducirla
Cómo funciona...
De forma predeterminada, nuestro script hace que la textura de la película se reproduzca en modo de bucle. Sin embargo, existe una variable
booleana que se puede cambiar mediante el Inspector panel, donde está representado por una casilla de verificación. Asimismo, hay una casilla de
verificación que se puede utilizar para evitar que la película se reproduzca cuando comienza el nivel.
Hay más...
Hay algunos otros comandos y parámetros de textura de película con los que se puede jugar. No olvide consultar la
guía de secuencias de comandos de Unity en http://docs.unity3d.com/
Documentation / ScriptReference / MovieTexture.html.
Conclusión
Este capítulo ha cubierto una serie de técnicas utilizadas para crear, a menudo de forma manual y a veces automática, mapas de
textura que son capaces de dar características distintivas a los materiales. Con suerte, ahora está más seguro de trabajar con el
nuevo Sombreado basado en la física de Unity, que es capaz de comprender las diferencias entre los flujos de trabajo disponibles, es
consciente del papel de cada propiedad del material y está listo para crear materiales de mejor apariencia para sus juegos. También
hemos explorado formas de cambiar las propiedades de los materiales durante el tiempo de ejecución accediendo al material de un
objeto a través de un script.
178
Capítulo 4
Recursos
El renderizado basado en la física es un tema complejo (y actual), por lo que es una buena idea estudiarlo un poco
familiarizándose con las herramientas y conceptos que hay detrás. Para ayudarlo con esta tarea, hemos incluido una lista no
exhaustiva de recursos a continuación que debe consultar.
Referencias
Aquí hay una lista de material interesante y detallado sobre la representación basada en la física (dentro y fuera de Unity):
F Dominar el sombreado de base física en Unity 5 por Renaldas Zioma (Unity), Erland Körner (Unity) y
Wes McDermott (Allegorithmic), está disponible en http: // www.
slideshare.net/RenaldasZioma/unite2014-mastering-physically-
basado-sombreado-en-unidad-5. Esta es una presentación detallada sobre el uso de PBS en Unity.
Presentado originalmente en la conferencia Unite 2014, contiene información desactualizada, pero, no
obstante, vale la pena echarle un vistazo.
F Sombreado basado en la física en Unity 5 por Aras Pranckevičius, de Unity, está disponible
a http://aras-p.info/texts/talks.html. Diapositivas y notas de un
presentación sobre el tema se dan en el GDC.
F Tutorial: renderizado basado en la física, ¡y tú también puedes! por Joe "EarthQuake" Wilson
está disponible en http://www.marmoset.co/toolbag/learn/pbr-practice.
Es una gran descripción de los creadores de Bolsa de herramientas para tití y Skyshop.
F Wiki de Polycount PBR, que está disponible en http://wiki.polycount.com/wiki/ PBR, es una lista de recursos
compilada por la comunidad de Polycount.
Herramientas
Esta es una nueva generación de software de texturizado para que la revise, en caso de que aún no lo haya hecho:
F Bitmap2Material crea materiales con todas las funciones (incluidos mapas normales, mapas
especulares y más) a partir de una única imagen de mapa de bits. Además, es de Allegorithmic, y
está disponible en http://www.allegorithmic.com/
productos / bitmap2material.
179
Crear mapas y materiales
F Quixel DDO es un complemento para crear texturas listas para PBR en Adobe Photoshop. De
Quixel, está disponible en http://www.quixel.se/ddo.
180
Capítulo 5
5
Usar cámaras
F Visualización de un minimapa
Introducción
Como desarrolladores, nunca debemos olvidar prestar atención a las cámaras. Después de todo, son las ventanas a través
de las cuales nuestros jugadores ven nuestros juegos. En este capítulo, veremos formas interesantes de usar cámaras que
mejoran la experiencia del jugador.
El panorama
F Pueden excluir del renderizado objetos en capas específicas. Se pueden configurar para renderizar en Ortográfico
F modo (es decir, sin perspectiva) Pueden tener su Campo de visión (FOV) manipuladas para simular una lente
F gran angular Se pueden renderizar sobre otras cámaras o dentro de áreas específicas de la pantalla Se pueden
F renderizar en texturas
181
Usar cámaras
La lista continua.
Tenga en cuenta que a lo largo de este capítulo, notará que algunas recetas cuentan con un equipo de cámara que sigue al personaje en
tercera persona del jugador. Esa plataforma es la Plataforma de cámara multiusos,
originalmente disponible en los activos de muestra de Unity, que se pueden importar a sus proyectos navegando a Activos
| Importar paquete | Cámara. Para facilitar las cosas, organizamos
Cámara multiusos Unity Package que lo contiene como un prefabricado, que se puede encontrar
en el 1362_05_codes carpeta.
182
Capítulo 5
Preparándose
Para esta receta, hemos preparado el Escena básica Paquete de Unity, que contiene una escena llamada
BasicScene. El paquete está en el 1362_05_codes carpeta.
Cómo hacerlo...
Para crear una visualización de imagen en imagen, simplemente siga estos pasos:
2. Desde el Proyecto ver, abrir el Escena básica nivel. Esta es una escena básica con una
personaje animado y algo de geometría extra.
3. Agregar una nueva Cámara a la escena a través del Crear menú desplegable en la parte superior del
Jerarquía ver Crear | Cámara).
183
Usar cámaras
5. Desde el Proyecto ver, crear una nueva Script de C # archivar y cambiarle el nombre
Imagen en imagen.
usando UnityEngine;
void Start () {
AdjustCamera ();
}
Void Update () {
si (actualizar)
AdjustCamera ();
}
void AdjustCamera () {
int sw = Screen.width; int sh =
Screen.height;
flotador swPercent = sw * 0.01f; flotador
shPercent = sh * 0.01f;
flotador xOffPercent = xOffset * swPercent; flotador yOffPercent =
yOffset * shPercent; int xOff;
int yOff;
if (unit == UnitsIn.screen_percentage) {
hsize = ancho * (int) swPercent; vsize = altura * (int)
shPercent; xOff = (int) xOffPercent;
184
Capítulo 5
vsize = altura;
xOff = xOffset;
yOff = yOffset;
}
switch (horAlign) {
case hAlignment.left:
hloc = xOff;
romper;
case hAlignment.right:
int justfiedRight = (sw - tamaño h); hloc = (justfiedRight -
xOff); romper;
case hAlignment.center:
float justifiedCenter = (sw * 0.5f) - (hsize * 0.5f); hloc = (int) (centro justificado - xOff);
romper;
}
cambiar (verAlign) {
case vAlignment.top:
int justifiedTop = sh - vsize; vloc = (justifiedTop -
(yOff)); romper;
caso vAlignment.bottom:
vloc = yOff;
romper;
case vAlignment.middle:
float justifiedMiddle = (sh * 0.5f) - (vsize * 0.5f); vloc = (int) (justifiedMiddle - yOff);
romper;
}
185
Usar cámaras
9. Reproduzca su escena. La ventana gráfica de la nueva cámara debe estar visible en la esquina superior derecha de la pantalla, como
se muestra a continuación:
186
Capítulo 5
Cómo funciona...
En este ejemplo, agregamos una segunda cámara para mostrar la escena desde un punto de vista diferente. La ventana de visualización
relativa de la segunda cámara se colocó originalmente en la parte superior de la Cámara principal' s viewport, ocupando todo el espacio de
la pantalla.
los Imagen en imagen el guión cambia la cámara Vista normalizada Rect, redimensionando y posicionando así la
ventana de acuerdo a las preferencias del usuario.
Primero, lee las preferencias del usuario para el componente (dimensiones, alineación y desplazamiento de la ventana de visualización de
Más tarde, para cambiar declaraciones para ajustar los otros dos parámetros Rect de la ventana gráfica (ubicación horizontal y vertical) de
acuerdo con las dimensiones totales de la pantalla, la dimensión de la ventana gráfica PiP, la alineación vertical / horizontal y el desplazamiento.
Finalmente, una línea de código le dice a la cámara que cambie la ubicación y las dimensiones de la cámara.
Viewport Rect:
Hay más...
Los siguientes son algunos aspectos de su imagen en imagen que puede cambiar:
187
Usar cámaras
Ver también
Preparándose
Para esta receta, hemos preparado el Escena básica Paquete de Unity que contiene una escena llamada
BasicScene. El paquete está en el 1362_05_codes carpeta.
Cómo hacerlo...
2. Desde el Proyecto ver, abrir el Escena básica nivel. Esta es una escena básica con una
personaje animado y algo de geometría extra.
3. Agregue dos cámaras más a la escena a través del Crear menú desplegable en la parte superior del Jerarquía
ver Crear | Cámara). Renombrarlas cam1 y cam2.
4. Cambiar el cam2 la posición y la rotación de la cámara para que no sea idéntica a cam1.
5. Crear un Vacío GameObject navegando al Crear menú desplegable en la parte superior del Jerarquía ver Crear | Crear
vacío). Luego, cámbiale el nombre Tablero de conmutadores.
6. Desde el Inspector ver, deshabilite el Cámara y Oyente de audio componentes de ambos cam1 y cam2. Además, establezca su Etiquetas
como Cámara principal, como se muestra:
188
Capítulo 5
7. Desde el Proyecto ver, crear una nueva Script de C # archivo. Cambiarle el nombre CameraSwitch y
ábralo en su editor.
usando UnityEngine;
if (Input.anyKeyDown) {
F o (int i = 0; i <camera.Length; i ++) {if (Input.GetKeyDown (atajos
[i]))
SwitchCamera (i);
}
}
189
Usar cámaras
si (changeAudioListener)
cámaras [i] .GetComponent <AudioListener> () .enabled =
cameraActive;
}
}
}
10. Desde el Inspector vista, configure tanto el Cámaras y Atajos tamaños a 3. Luego, arrastre
y poblar el Cámaras ranuras con las cámaras de la escena (incluida la
Cámara principal, dentro de Plataforma de cámara multiusos | Pivote GameObject) Luego, escriba 1, 2, y 3 en el Atajos campos
de texto, como se muestra en la siguiente captura de pantalla:
190
Capítulo 5
Cómo funciona...
El guión es muy sencillo. Primero, compara la tecla que se presiona con la lista de atajos. Si la clave está
incluida en una lista de atajos, se pasa al SwitchCamera
función, que a su vez recorre una lista de cámaras, habilita la asociada al atajo recibido, y habilita también su Oyente
de audio, en caso de que el Cambiar el oyente de audio la opción está marcada.
Hay más...
Aquí hay algunas ideas sobre cómo podría intentar cambiar un poco esta receta.
Ver también
Si desea que su juego o jugador tome instantáneas del juego y las aplique como texturas, esta receta le mostrará cómo hacerlo. Esto
puede ser muy útil si planeas implementar una galería de fotos en el juego o mostrar una instantánea de un momento clave pasado al
final de un nivel (los juegos de carreras y las simulaciones de acrobacias usan mucho esta función). Para este ejemplo en particular,
tomaremos una instantánea de una región enmarcada de la pantalla y la imprimiremos en la esquina superior derecha de la pantalla.
Preparándose
Para esta receta, hemos preparado el Escena básica Paquete de Unity, que contiene una escena llamada
BasicScene. El paquete está en el 1362_05_codes carpeta.
191
Usar cámaras
Cómo hacerlo...
Para crear texturas a partir del contenido de la pantalla, siga estos pasos:
2. Desde el Proyecto ver, abrir el Escena básica nivel. Esta es una escena básica con
un personaje animado y algo de geometría extra. También cuenta con un Lona para los elementos de la interfaz de usuario.
3. Crear un Imagen de interfaz de usuario GameObject del Crear menú desplegable en la parte superior del
Jerarquía ver Crear | UI | Imagen). Tenga en cuenta que se creará como un elemento secundario del Lona GameObject.
Luego, cámbiale el nombre marco.
5. Ahora, desde el Inspector ver, cambiar Transformar Rect a los siguientes valores:
Anclas | Min | X: 0,25, Y: 0,25; Anclas | Max | X: 0,75, Y: 0,75;
Pivot | X: 0,5, Y: 0,5; Izquierda: 0; Parte superior: 0; Pos Z: 0; Correcto: 0; Fondo: 0.
6. Desde el Imagen (Script) componente, desmarque la Centro de relleno opción, como se muestra a continuación:
7. Cree un Imagen sin procesar de la interfaz de usuario GameObject del Crear menú desplegable en la parte superior de
la Jerarquía ver Crear | UI | RawImage). Tenga en cuenta que se creará como un elemento secundario del Lona GameObject.
Luego, cámbiale el nombre Foto.
192
Capítulo 5
8. Desde el Inspector ver, encontrar el Imagen sin procesar (secuencia de comandos) componente de la Foto
GameObject y set Ninguna como su Textura. Además, desde lo alto de la Inspector ver, deshabilite el Foto GameObject
desmarcando la casilla al lado de su nombre.
9. Ahora, desde el Inspector ver, cambiar el Transformar Rect a los siguientes valores:
Anchura: 1; Altura: 1; Anclas | Min | X: 0, Y: 1; Anclas | Max | X: 0, Y: 1; Pivot | X:
0, Y: 1; Pos X: 0; Pos Y: 0; Pos Z: 0 como se muestra en la siguiente captura de pantalla:
10. Necesitamos crear un guión. En el Proyecto ver, haga clic en el Crear Menú desplegable
y elige Secuencia de comandos de C #. Cambiarle el nombre PantallaTextura y ábralo en su editor.
usando UnityEngine;
usando UnityEngine.UI;
usando System.Collections;
Void Update () {
si (Input.GetKeyUp (KeyCode.Mouse0))
193
Usar cámaras
194
Capítulo 5
13. En el Inspector ver, encontrar el Textura de pantalla componente y rellenar los campos
Foto GUI y GUI de marco con los GameObjects Foto y marco respectivamente:
14. Juega la escena. Podrá tomar una instantánea de la pantalla (y hacer que se muestre en la esquina superior
izquierda a un cuarto del tamaño original) haciendo clic en el botón del mouse, como se muestra en la siguiente
captura de pantalla:
Cómo funciona...
Primero, creamos un marco GUI desde el cual tomar una instantánea y un elemento GUI sobre el cual aplicar la textura. Luego,
aplicamos un script al Cámara principal para capturar el contenido de la pantalla y aplicarle una nueva textura.
El script crea una nueva textura y captura el botón izquierdo del mouse que se presiona, luego de lo cual inicia una corrutina para
calcular un área de Rect, copiar píxeles de pantalla de esa área y aplicarlos a una textura que se mostrará en el foto Elemento de la
GUI, que también cambia de tamaño para adaptarse a la textura.
195
Usar cámaras
El tamaño del Rect se calcula a partir de las dimensiones de la pantalla y del marco. Transformar Rect configuraciones,
particularmente su Pivote, Anclas, Ancho y Alto. A continuación, los píxeles de la pantalla son capturados ReadPixels () comando,
y se aplica a la textura, que luego se aplica a la Imagen sin procesar foto, que se redimensiona para alcanzar la proporción
deseada entre el tamaño de la foto y los píxeles originales.
Hay más...
Además de mostrar la textura como un elemento de la GUI, puede usarla de otras formas.
Ver también
F Guardar capturas de pantalla de la receta del juego en el Capítulo 10, Trabajar con los archivos y dispositivos
de recursos externos
Preparándose ...
Para esta receta, hemos preparado el Escena básica Paquete de Unity, que contiene una escena llamada
BasicScene. El paquete está en el 1362_05_codes carpeta.
Cómo hacerlo...
2. Desde el Proyecto ver, abrir el Escena básica nivel. Esta es una escena básica con una
personaje animado y algo de geometría extra.
196
Capítulo 5
4. Selecciona el Cámara principal GameObject dentro del Plataforma de cámara multiusos | Pivote
GameObject y aplique el Viñeta efecto de imagen (navegando a Componente | Efectos de imagen
| Cámara | Viñeta y aberración cromática).
5. Necesitamos crear un guión. En el Proyecto ver, haga clic en el Crear menú desplegable y elija Secuencia de comandos de
C #. Cambiarle el nombre Vista telescópica y ábralo en su editor.
void Start () {
initFov = Camera.main.fieldOfView;
minFov = initFov / zoom;
v = this.GetComponent <VignetteAndChromaticAberration> () como
VignetteAndChromaticAberration;
}
Void Update () {
si (Input.GetKey (KeyCode.Mouse0))
ZoomView ();
más
Disminuir el zoom();
void ZoomView () {
currFov = Camera.main.fieldOfView;
197
Usar cámaras
Camera.main.fieldOfView = currFov;
}
void ZoomOut () {
currFov = Camera.main.fieldOfView;
addFov = speedOut * Time.deltaTime;
Camera.main.fieldOfView = currFov;
}
}
8. Juega el nivel. Debería ver un efecto de viñeta animado además del zoom:
198
Capítulo 5
Cómo funciona...
el campo de visión.
los Vista telescópica El script cambia el campo de visión de la cámara restando de él cada vez que se presiona el botón
izquierdo del mouse. También se suma al valor de FOV cuando el botón del mouse está no retenido, hasta que alcance su
valor original.
El límite de zoom del FOV se puede deducir del código minFov = initFov / zoom ;.
Esto significa que el valor mínimo del campo de visión es igual a su valor original dividido por la cantidad de zoom. Por ejemplo, si
nuestra cámara presenta, originalmente, un campo de visión de 60, y configuramos el
Zoom de vista telescópica cantidad a 2.0, el campo de visión mínimo permitido será 60/2 = 30. La diferencia se muestra en las
siguientes dos capturas de pantalla:
Hay más...
También puede agregar una variable para controlar la Desenfocar viñeta nivel del Viñeta efecto de imagen.
199
Usar cámaras
Visualización de un minimapa
En muchos juegos, una vista más amplia de la escena puede ser invaluable para la navegación y la información. Los minimapas son excelentes
para brindar a los jugadores esa perspectiva adicional que pueden necesitar cuando están en el modo de primera o tercera persona.
Preparándose ...
Para esta receta, hemos preparado el Escena básica Unity Package, que contiene una escena llamada BasicScene. También
necesitará importar tres archivos de imagen con el nombre Brújula.png,
compassMarker.png, y compassMask.png. Todos los archivos están disponibles en 1362_05_05
carpeta.
Cómo hacerlo...
200
Capítulo 5
3. Desde el Jerarquía ver, crear una nueva Panel de interfaz de usuario objeto ( Crear | UI | Panel). Se creará como un elemento
secundario de la interfaz de usuario. Lona GameObject. Cambiarle el nombre MiniMap. Entonces, desde el Inspector vista, establezca
Altura a 256, y es Pos X y Pos Y campos a - 128. Además, rellene el Imagen de origen campo, dentro del Imagen componente,
con el brújulaMáscara sprite, ajustando el Color campo trayendo Alfa hasta 255, como se muestra en la siguiente
captura de pantalla:
201
Usar cámaras
5. Seleccione el MsLaser GameObject (que es el personaje del jugador), y, desde la parte superior de
la Inspector ver, acceder al Capa Menú desplegable. Seleccione Agregar capa… y luego nombrar un Capa de usuario Jugador, como
se muestra en la siguiente captura de pantalla:
7. Desde el Proyecto ver, crear una nueva Renderizar textura y nombrarlo Map_Render.
Entonces, de Inspector, cambiar su tamaño a 256 x 256.
8. Desde el Jerarquía ver, crear una nueva cámara ( Crear | Cámara) y cambiarle el nombre
MapCamera. Desde el Inspector vista, cambie sus parámetros de la siguiente manera (que se muestra en la captura de pantalla
que sigue):
?? Proyección: Ortográfico
202
Capítulo 5
9. Desde el Jerarquía ver, haga clic derecho en MiniMap y navegar a UI | Imagen sin procesar
para crear un elemento secundario de la IU. Nombralo MapTexture. Entonces, desde el Inspector ver, rellenar el Textura campo
con el Map_Render textura y haga clic en el Establecer tamaño nativo , como se muestra en la siguiente captura de pantalla:
203
Usar cámaras
10. Ahora, haga clic derecho en MiniMap y navegar a UI | Imagen para crear otro hijo
elemento. Nombralo Brújula. Entonces, desde el Inspector ver, rellenar el Imagen de origen campo con el Brújula
imagen y haga clic en el Establecer tamaño nativo botón.
11. Una vez más, haga clic derecho en MiniMap y navegar a UI | Imagen para agregar otro
elemento hijo. Nombralo Marcador. Entonces, desde el Inspector ver, rellenar el Imagen de origen campo con el brújula
imagen y haga clic en el Establecer tamaño nativo botón.
12. Desde el Proyecto ver, crear una nueva Script de C # y nombrarlo MiniMap. Ábrelo y
reemplace todo con el siguiente código:
usando UnityEngine;
usando UnityEngine.UI;
usando System.Collections;
void Start () {
cam = GetComponent <Cámara> (); camAngle =
transform.eulerAngles;
targetAngle = target.transform.eulerAngles;
camAngle.x = 90;
camAngle.y = targetAngle.y;
transform.eulerAngles = camAngle;
}
Void Update () {
targetPos = target.transform.position;
camPos = targetPos;
204
Capítulo 5
camPos.y + = altura;
transform.position = camPos;
cam.orthographicSize = distancia;
Vector3 compassAngle = new Vector3 ();
compassAngle.z = target.transform.eulerAngles.y;
if (rotar) {
mapGUI.transform.eulerAngles = compassAngle;
marker.transform.eulerAngles = new Vector3 (); } más {
marker.transform.eulerAngles = -compassAngle;
}
}
}
13. Guarde el script y adjúntelo a MapCamera. Entonces, desde el Inspector ver, cambiar
los parámetros del Mini mapa componente de la siguiente manera (que se muestra en la captura de pantalla que sigue):
?? Objetivo: MsLaser
?? Altura: 10
?? Distancia: 10
?? Girar: Comprobado
205
Usar cámaras
14. Juega la escena. Debería poder ver el funcionamiento del minimapa en la esquina superior derecha de la pantalla:
Cómo funciona...
El elemento principal del minimapa es una textura, que se utiliza como elemento de la GUI, renderizada a partir de una cámara
ortográfica que sigue al jugador desde una perspectiva de arriba hacia abajo. Se hicieron algunos ajustes necesarios para MapCamera:
F Excluyendo el Jugador etiqueta de su Máscara de sacrificio ( para hacer invisible a la cámara el modelo del
personaje)
F Desactivando su Oyente de audio ( para que no entre en conflicto con la cámara principal)
El minimapa estaba adornado con un marco de brújula y un marcador que indicaba la posición del jugador. Todos estos elementos
de la GUI fueron creados por un Panel que también funcionó como un Máscara
a los elementos visuales. Finalmente, se creó un script con tres propósitos: configurar preferencias para el Cámara ( como el área
cubierta), reposicionando el Cámara en tiempo de ejecución de acuerdo con la configuración de transformación del jugador y rotando los
elementos apropiados de la interfaz de usuario.
Hay más...
206
Capítulo 5
Preparándose
Para esta receta, hemos preparado el Escena básica Paquete de Unity, que contiene una escena llamada
Escena básica, y también dos modelos FBX 3D para el monitor y los objetos de la cámara. El paquete está en el 1362_05_codes
carpeta, y los modelos 3D están en la 1362_05_06 carpeta.
207
Usar cámaras
Cómo hacerlo...
Para crear una visualización de imagen en imagen, simplemente siga estos pasos:
2. Desde el Proyecto ver, abrir el Escena básica nivel. Esta es una escena básica con un personaje animado y algo
de geometría adicional.
3. Desde el Proyecto ver, colocar el monitor y cámara objects into the scene by dragging them into the Hierarchy
panel. Their Transform settings should be (shown in the following screenshot): monitor: Position: X: 0; Y: 0.09;
Z: 4. Rotation: X: 0;
Y: 180; Z: 0. camera: Position: X: - 3; Y: 0.06; Z: 4. Rotation: X: 0; Y: 90; Z: 0:
4. Create, from the Project view, a new Render Texture, and rename it screen. Then, from the Inspector view,
change its Size to 512 x 512.
5. Add a new Camera to the scene through the Create drop-down menu on top of the Hierarchy view ( Create
| Camera). Then, from the Inspector view, name it
Surveillance and make it a child of the camera GameObject. Then, change its
Transform settings to the following: Position: X: 0; Y: 2; Z: 0, and Rotation: X: 0;
Y: 0; Z: 0.
208
Chapter 5
6. Select the Surveillance camera you have created, and, from the Inspector view,
change its Clipping Planes | Near to 0.6. Also, populate the Target Texture slot with the Render Texture screen
and disable the camera's Audio Listener component, as shown in the following screenshot:
7. From the Hierarchy view, expand the monitor object and select its screen child.
Then, from the Inspector, find its material (named Desert), and, from the Shader
drop-down menu, change itto Unlit/Texture. Finally, set the screen texture as its base texture, as
shown in the following screenshot:
8. Now it's time to add some post-processing to the texture. From the main menu, import the Effects package
( Assets | Import Package | Effects).
209
Using Cameras
9. From the Hierarchy view, select the Surveillance camera. Then, from the main
menu, add the Grayscale image effect component ( Component | Image Effects
| Color Adjustments | Grayscale). Also, add the Noise And Grain image effect ( Component | Image
Effects | Noise | Noise and Grain (Filmic)). Finally, from the Inspector view, set the Intensity
Multiplier of the Noise And Grain to 4.
10. Play your scene. You should be able to see your actions in real time on the monitor's screen, as shown
here:
How it works...
We achieved the final result by using the surveillance camera as source for the Render Texture applied to the screen.
The camera was made a child of the camera's 3D model for easier relocation. Also, its Near Clipping plane was
readjusted in order to avoid displaying parts of the camera's 3D model geometry, and its Audio Source component
was disabled so that it wouldn't clash with the main camera's component.
In addition to setting up the surveillance camera, two Image Effects were added to it: Noise And Grain and Greyscale.
Together, these effects should make Render Texture look more like a cheap monitor's screen.
Finally, our screen render texture was applied to the screen's 3D object's material (which had its shader
changed to Unlit/texture so it could be seen in low/no light conditions, like a real monitor).
210
Chapter 6
6
Lights and Effects
f Setting up an environment with Procedural Skybox and Directional Light Lighting a simple
Introduction
Whether you're willing to make a better-looking game, or add interesting features, lights and effects can boost your
project and help you deliver a higher quality product. In this chapter, we will look at the creative ways of using lights
and effects, and also take a look at some of Unity's new features, such as Procedural Skyboxes, Reflection Probes,
Light Probes, and custom Reflection Sources.
Lighting is certainly an area that has received a lot of attention from Unity, which now features real-time Global
Illumination technology provided by Enlighten. This new technology provides better and more realistic results for
both real-time and baked lighting. For more information on Unity's Global Illumination system, check out its
documentation at http://docs.
unity3d.com/Manual/GIIntro.html.
There are many ways of creating light sources in Unity. Here's a quick overview of the most common methods.
211
Lights and Effects
Lights
Lights are placed into the scene as game objects, featuring a Light component. They can function in Realtime, Baked, or
Mixed modes. Among the other properties, they can have their Range, Color, Intensity, and Shadow Type set by the
user. There are four types of lights:
f Area Light: This baked-only light type is emitted in all directions from a rectangle-shaped
entity, allowing for a smooth, realistic shading
Environment Lighting
Unity's Environment Lighting is often achieved through the combination of a Skybox
material and sunlight defined by the scene's Directional Light. Such a combination creates an ambient light that is
integrated into the scene's environment, and which can be set as
Realtime or Baked into Lightmaps.
212
Chapter 6
Emissive materials
When applied to static objects, materials featuring the Emission colors or maps will cast light over
surfaces nearby, in both real-time and baked modes, as shown in the following screenshot:
Projector
As its name suggests, a Projector can be used to simulate projected lights and shadows, basically by projecting
a material and its texture map onto the other objects.
213
Lights and Effects
Light Probes are a way of sampling the scene's illumination at specific points in order to have it applied onto dynamic
objects without the use of real-time lighting.
Manual/GlobalIllumination.html.
214
Chapter 6
As it can be seen in many first-person shooters and survival horror games, lights and shadows can add a great deal of
realism to a scene, helping immensely to create the right atmosphere for the game. In this recipe, we will create a
cloudy outdoor environment using cookie textures. Cookie textures work as masks for lights. It functions by adjusting
the intensity of the light projection to the cookie texture's alpha channel. This allows for a silhouette effect (just think of
the bat-signal) or, as in this particular case, subtle variations that give a filtered quality to the lighting.
Getting ready
If you don't have access to an image editor, or prefer to skip the texture map elaboration in order to focus on
the implementation, please use the image file called cloudCookie.tga,
which is provided inside the 1362_06_01 folder.
How to do it...
2. Using black as the foreground color and white as the background color, apply the Clouds filter (in
Photoshop, this is done by navigating to the Filter | Render | Clouds menu).
215
Lights and Effects
Learning about the Alpha channel is useful, but you could get the same result
without it. Skip steps 3 to 7, save your image as cloudCookie.png and, when
changing texture type in step 9, leave Alpha from Greyscale checked.
4. Open the Channels window (in Photoshop, this can be done by navigating to the
Window | Channels menu).
5. There should be three channels: Red, Green, and Blue. Create a new channel. This will be the Alpha channel.
6. In the Channels window, select the Alpha 1 channel and paste your image into it.
8. Import your image file to Unity and select it in the Project view.
9. From the Inspector view, change its Texture Type to Cookie and its Light Type to
Directional. Then, click on Apply, as shown:
216
Chapter 6
10. We will need a surface to actually see the lighting effect. You can either add a plane to your scene (via
navigating to the GameObject | 3D Object | Plane menu), or create a Terrain ( menu option GameObject |
3D Object | Terrain) and edit it, if you so you wish.
11. Let's add a light to our scene. Since we want to simulate sunlight, the best option is to create a Directional
Light. You can do this through the drop-down menu named
Create | Light | Directional Light in the Hierarchy view.
12. Using the Transform component of the Inspector view, reset the light's Position to X:
0, Y: 0, Z: 0 and its Rotation to X: 90; Y: 0; Z: 0.
13. In the Cookie field, select the cloudCookie texture that you imported earlier. Change
the Cookie Size field to 80, or a value that you feel is more appropriate for the scene's dimension.
Please leave Shadow Type as No Shadows.
217
Lights and Effects
14. Now, we need a script to translate our light and, consequently, the Cookie projection.
Using the Create drop-down menu in the Project view, create a new C# Script named
MovingShadows.cs.
15. Open your script and replace everything with the following code:
using UnityEngine;
using System.Collections;
void Start(){
initPos = transform.position;
lightCookieSize = GetComponent<Light>().cookieSize;
}
void Update(){
Vector3 pos = transform.position; float xPos= Mathf.Abs
(pos.x); float zPos= Mathf.Abs (pos.z);
transform.position = pos;
float windX = Time.deltaTime * windSpeedX; float windZ = Time.deltaTime *
windSpeedZ; transform.Translate(windX, 0, windZ, Space.World);
}
}
218
Chapter 6
17. Select the Directional Light. In the Inspector view, change the parameters
Wind Speed X and Wind Speed Z to 20 ( you can change these values as you wish, as shown).
How it works...
With our script, we are telling the Directional Light to move across the X and Z axis, causing the Light Cookie texture
to be displaced as well. Also, we reset the light object to its original position whenever it traveled a distance that was
either equal to or greater than the Light Cookie Size. The light position must be reset to prevent it from traveling too
far, causing problems in real-time render and lighting. The Light Cookie Size parameter is used to ensure a smooth
transition.
The reason we are not enabling shadows is because the light angle for the X axis must be 90 degrees (or there will
be a noticeable gap when the light resets to the original position). If you want dynamic shadows in your scene, please
add a second Directional Light.
There's more...
In this recipe, we have applied a cookie texture to a Directional Light. But what if we were using the Spot or Point
Lights?
219
Lights and Effects
Getting ready
For this recipe, we will prepare a Reflection Cubemap, which is basically the environment to be projected as a
reflection onto the material. It can be made from either six or, as shown in this recipe, a single image file.
To help us with this recipe, it's been provided a Unity package, containing a prefab made of a 3D object and a basic
Material (using a TIFF as Diffuse map), and also a JPG file to be used as the reflection map. All these files are inside
the 1362_06_02 folder.
How to do it...
2. From the Inspector view, expand the Material component and observe the asset
preview window. Thanks to the Specular map, the material already features a reflective look.
However, it looks as if it is reflecting the scene's default Skybox,
as shown:
220
Chapter 6
3. Import the CustomReflection.jpg image file. From the Inspector view, change its
Texture Type to Cubemap, its Mapping to Latitude - Longitude Layout (Cylindrical),
and check the boxes for Glossy Reflection and Fixup Edge Seams. Finally, change its
Filter Mode to Trilinear and click on the Apply button, shown as follows:
221
Lights and Effects
4. Let's replace the Scene's Skybox with our newly created Cubemap, as the Reflection
map for our scene. In order to do this, open the Lighting window by navigating to the Window | Lighting menu.
Select the Scene section and use the drop-down menu to change the Reflection Source to Custom. Finally,
assign the newly created
CustomReflection texture as the Cubemap, shown as follows:
How it works...
While it is the material's specular map that allows for a reflective look, including the intensity and smoothness of the
reflection, the refection itself (that is, the image you see on the reflection) is given by the Cubemap that we have
created from the image file.
222
Chapter 6
There's more...
Reflection Cubemaps can be achieved in many ways and have different mapping properties.
Mapping coordinates
The Cylindrical mapping that we applied was well-suited for the photograph that we used. However, depending on
how the reflection image is generated, a Cubic or Spheremap- based mapping can be more appropriate. Also, note
that the Fixup Edge Seams option will try to make the image seamless.
Sharp reflections
You might have noticed that the reflection is somewhat blurry compared to the original image; this is because we have
ticked the Glossy Reflections box. To get a sharper-looking reflection, deselect this option; in which case, you can also
leave the Filter Mode option as default (Bilinear).
Maximum size
At 512 x 512 pixels, our reflection map will probably run fine on the lower-end machines. However, if the quality of
the reflection map is not so important in your game's context, and the original image dimensions are big (say, 4096
x 4096), you might want to change the texture's Max Size at the Import Settings to a lower number.
Although using GUI elements, such as a cross-hair, is a valid way to allow players to aim, replacing (or combining) it
with a projected laser dot might be a more interesting approach. In this recipe, we will use the Projector and Line components
to implement this concept.
Getting ready
To help us with this recipe, it's been provided with a Unity package containing a sample scene featuring a character
holding a laser pointer, and also a texture map named LineTexture.
All files are inside the 1362_06_03 folder. Also, we'll make use of the Effects assets package provided by Unity (which
you should have installed when installing Unity).
223
Lights and Effects
How to do it...
2. Import the Effects package by navigating to the Assets | Import Package | Effects
menu. If you want to import only the necessary files within the package, deselect everything in the Importing
package window by clicking on the None button, and then check the Projectors folder only. Then, click
on Import, as shown:
3. From the Inspector view, locate the ProjectorLight shader (inside the Assets
| Standard Assets | Effects | Projectors | Shaders folder). Duplicate the file and name the new
copy as ProjectorLaser.
224
Chapter 6
The reason for editing the shader for the laser was to make it stronger by
changing its blend type to Additive. Shader programming is a complex subject,
which is beyond the scope of this book. However, if you want to learn more
about it, check out Unity's documentation on the subject, which is available at
http://docs.unity3d.com/Manual/SL-Reference.
html, and also the book called Unity Shaders and Effects Cookbook, published
by Packt.
5. Now that we have fixed the shader, we need a material. From the Project view, use the Create drop-down
menu to create a new Material. Name it LaserMaterial.
Then, select it from the Project view and, from the Inspector view, change its Shader
to Projector/Laser.
6. From the Project view, locate the Falloff texture. Open it in your image editor and, except for the first
and last columns column of pixels that should be black, paint everything white. Save the file and go
back to Unity.
7. Change the LaserMaterial' s Main Color to red (RGB: 255, 0, 0). Then, from the
texture slots, select the Light texture as Cookie and the Falloff texture as Falloff.
225
Lights and Effects
8. From the Hierarchy view, find and select the pointerPrefab object ( MsLaser |
mixamorig:Hips | mixamorig:Spine | mixamorig:Spine1 | mixamorig:Spine2 |
mixamorig:RightShoulder | mixamorig:RightArm | mixamorig:RightForeArm
| mixamorig:RightHand | pointerPrefab). Then, from the Create drop-down menu, select Create
Empty Child. Rename the new child of pointerPrefab as
LaserProjector.
9. Select the LaserProjector object. Then, from the Inspector view, click the Add Component button and
navigate to Effects | Projector. Then, from the Projector
component, set the Orthographic option as true and set Orthographic Size as 0.1.
Finally, select LaserMaterial from the Material slot.
10. Test the scene. You will be able to see the laser aim dot, as shown:
11. Now, let's create a material for the Line Renderer component that we are about to
add. From the Project view, use the Create drop-down menu to add a new Material.
Name it as Line_Mat.
12. From the Inspector view, change the shader of the Line_Mat to Particles/Additive.
Then, set its Tint Color to red (RGB: 255;0;0).
13. Import the LineTexture image file. Then, set it as the Particle Texture for the
Line_Mat, as shown:
226