Vapor
De LiTHiUM
← Revisión anterior | Revisión siguiente →
Tutorial Intermedio #7 (GoldSrc) Título completo: Humo/Vapor en el HL y CS Requisitos: Se supone un manejo intermedio del WorldCraft/Hammer y las entidades del HL/CS, y conocimiento de las herramientas PakExplorer y SprView
Tabla de contenidos |
Introducción
En este tutorial vamos a ver la forma de hacer efectos de vapor (para usar en las típicas tuberías q están rotas, con escapes) o también para simular el humo q sale de las chimeneas de las casas (fíjate en el mapa de_cbble del Counter-Strike).
La creación del efcto en sí no es complicado. Lo que tiene mas miga es conseguir que sea un efecto activable, esto es, que al pulsar un botón o girar una llave comience a salir vapor, comience a hacer ruido y haga daño al personaje si se acerca).
Para no liaros con tanto "env_sprite", entidad, y tal, he llamado "puff" (si, del inglés, lo sientoooo ;) a cada unidad de vapor. Llamarlo "unidad de vapor" me suena un tanto raro...
El vapor
Primero haremos una habitación normal y corriente como siempre, con las salidas para los jugadores y la iluminación. Entonces, por ejemplo, podemos crear una tubería (rota) que será de donde salga el vapor.
Bien, para simular el vapor usaremos varias entidades "env_sprite" (yo he usado 6 para el mapa demo) en fila, hacia donde queramos que vaya el vapor. Las colocaremos mas juntas cerca de la grieta de la tubería, y las iremos espaciando mas según nos vamos alejando de ella.
Vamos a configurar las características básicas de cada entidad "env_sprite". Entramos en las propiedades de la entidad y ponemos en el campo "Render Mode" el valor de "Additive". En el campo "FX Amount" ponemos un valor bajo como 80 (esto lo hace trasparente, dándole cerca de un 30% (80/255) del total). Entonces en "Sprite Name" ponemos "sprites/xsmoke1.spr" que será el siguiente sprite:
¿Quieres que se pueda activar y desactivar?
Si tu respuesta es no, entra en las propiedades de cada entidad "env_sprite" y en la solapa "Flags" activa la opción "Start On".
Si tu respuesta es sí, dale a cada entidad "env_sprite" un nombre (recuerda, en el campo "Name" :)
Ahora copiamos y pegamos tantas entidades "env_sprite" como queramos (recuerda, yo he usado 6). Ahora las colocamos: las que están mas cerca de la tubería las superponemos un poco sobre la siguiente, y a partir de la 4º, sólo las pegamos un poco.
Ahora para darle realismo, modificaremos la escala de cada "puff" de vapor (el campo "Scale" está en las propiedades de nuestra entidad "env_sprite", alias "puff" :). Empezamos por el que está mas pegado a la tubería, dándole un valor, por ejemplo de 0.3. Recuerda que los valores son:
- Tamaño reducido: número < 1
- Tamaño original: número = 1
- Tamaño aumentado: número > 1
Comenzando por 0.3 da valores a los 6 puffs hasta el mas alejado, que tendrá un valor de 1.
Para darle aún mas realismo, también deberemos cambiar los valores del campo "Framerate" de cada "puff". Asi evitaremos que la animación de cada uno sea igual que la de los demas, consiguiendo unos movimientos aleatorios mas próximos a los del auténtic vapor. Recuerda, comenzamos por el que está mas pegado a la tubería y acabamos en el mas alejado. Le he dado a los "puffs" valores de 10, 14, 18, 22, 26 y 30, pero puedes ajustarlo a tu gusto, claro.
Y para finalizar (bueno,... casi) deberemos modificar los valores de transparencia a cada "puff", ya que cuanto mas te alejas de la tubería, mas transparente ha de ser el vapor, hasta que desaparezca. Entonces deberemos ir reduciendo los valores del campo "FX Amount". Para que te hagas una idea, el último "puff" del mapa-demo tiene un valor de 15 (6% de solidez).
Un poco de FX
Para que el realismo sea total, como siempre, colocaremos una entidad "ambient_generic" y elegiremos un sonido de vapor (dentro del PAK del Half-Life tenemos el "ambience/steamjet1.wav" ). Entonces le daremos las propiedades que queramos, como "Start Silent" (que comience en silencio, por si luego lo vamos a activar con un botón o algo) y "Small Radius" (un radio pequeño, ya que sólo es un escape, ¿no? :)
Para que el vapor cause daño al personaje que se acerque, haremos un sólido con la textura "AAATRIGGER", lo colocaremos alrededor de nuestro chorro de vapor y entonces lo transformaremos en "trigger_hurt". Entonces configuramos sus propiedades. Damos un valor a "Damage" que será el daño que haga al personaje cuando se acerque, de por ejemplo 5. Y para que el daño que cause sea por quemadura en el campo "Damage Type" seleccionamos "BURN" (quemadura). Ahora, si vamos a hacer que el vapor se pueda activar (lo que implica que el daño también se active), deberemos darle a esta entidad "trigger_hurt" un valor de "Start Off", para que cuando no haya vapor no cuse daño... ;)
Interactuando con el vapor
Ahora hay un varias posibilidades. Podemos hacer que el vapor esté siempre ahi, que aparezca y desaparezca rápidamente, o hacer que aparezca y desaparezca de forma progresiva:
- Para que permanezca ahí siempre el vapor, pondremos los "puff" con la propiedad de "Start On", en la entidad "ambient_generic" no activaremos la opción "Start Silent", y en la entidad "trigger_hurt" no activaremos la opción "Start Off".
- Para hacer que aparezca y desaparezca rápidamente, lo que haremos será dar el mismo nombre a todas las "env_sprites" del vapor, a la entidad "ambient_generic" y a la entidad "trigger_hurt" y luego activarlas mediante un botón o palanca (hmmm... opción poco realista :)
- Para hacer que aparezca progresivamente, además del botón, tendremos que usar una entidad "multi_manager" (capaz de manejar hasta 16 eventos) y activar cada entidad con un retardo que estipulemos. Entonces daremos a cada "env_sprite", y a las "ambient_generic" y "trigger_hurt" nombres diferentes.
Ahora atento, porque esto no se ve a simple vista: ... entramos en las propiedades de la entidad "multi_manager" y activamos el modo de edición (pulsamos con el ratón sobre el botón "SmartEdit"). Ahora vemos que tenemos un botón de "Add" para añadir parámetros a la "multi_manager". Mira:
Entonces, lo pulsamos y metemos en el campo "Key" el nombre de cada entidad, y en "Value" el valor en segundos del retrardo. En el mapa-demo he puesto un valor en segundos mas pequeño para el "puff" que está mas cerca de la tubería que para el mas alejado (realismo, realismoooo :). Quedan estos valores para los "puffs": 0.5, 0.75, 1, 1.25, 1.5 y 1.75. Y para las entidades "ambient_generic" (que activa el sonido del vapor) y la "trigger_hurt", he puesto el valor del mínimo, 0.5.
NOTA: Recuerda que la entidad "multi_manager" debe de tener un nombre en el campo "Name" para que pueda ser activada con un botón, palanca, o lo que tu desees.
Finalmente tendremos algo parecido a esto:
Mapa de ejemplo
Si quieres bajarte el mapa (entidades activadas por botón y con retardo) creado para este tutorial, haz click aquí.
