Version: 2019.3
Creating a simple explosion
Particle System vertex streams and Standard Shader support

Creating exhaust smoke from a vehicle

Los carros y muchos otros vehículos emiten humo de exosto a medida que convierten gasolina en poder. Usted puede utilizar el sistema de partículas para agregar un exosto como un buen toque final para un vehículo.

Un exosto generado por un sistema de partículas
Un exosto generado por un sistema de partículas

Linea de tiempo de una partícula

El humo del exosto emerge de la tubería bastante rápido, pero luego se ralentiza rápidamente en contacto con la atmósfera. A medida que se vuelve más lento, se extiende, cada vez más débil y pronto se disipa en el aire. Dado que el gas de escape está caliente, también se eleva ligeramente a medida que pasa a través del aire más frío que lo rodea.

Una partícula del humo de exosto debe comenzar no más grande que el ancho de la tubería, pero luego crecer en tamaño considerablemente durante su corta vida útil. Por lo general, comienza en parte transparente y se desvanecen a una transparencia total, ya que se mezcla con el aire. En cuanto a la dinámica, la partícula se emitirá muy rápido, pero luego se ralentizará rápidamente y también se levantará ligeramente hacia arriba.

Implementación

En el módulo Shape, seleccione la forma Cone (cono) y configure su propiedad Angle a cero; el “cono” en este caso en realidad será una tubería cilíndrica. El Radius de la tubería por lo general depende en el tamaño del vehículo pero usted lo puede configurar usualmente haciendo que coincida con el Gizmo del radio en el scene view al model del vehículo (eg, un modelo de un carro usualmente tendrá una tubería de exosto atrás cuyo tamaño usted puede hacer que coincida). El radio en realidad determina algunas pocas cosas acerca de las configuraciones de propiedad que escoge, tal como el tamaño de partículas y la tasa de emisión. Por propósitos de este ejemplo, asumiremos que el vehículo es un carro que sigue la convención de tamaño estándar de Unity que es una unidad de mundo equivale a un metro; el radio por lo tanto se configura a que sea 0.05 o 5cm.

Un gráfico adecuado para la partícula de humo se proporciona por el material Smoke4 dado en los standard assets. Si usted no tiene estos instalados entonces seleccione Assets > Import Package > Particles del menú. Luego, vaya al módulo Renderer del sistema de partículas y configure la propiedad del Material a Smoke4.

El tiempo de vida predeterminada de cinco segundos por lo general es muy larga para los gases del exosto del carro, por lo que debe abrir el módulo de Particle System (que tiene el mismo nombre que el GameObject, eg, “Exhaust”) y configure el Start Lifetime cerca de 2.5 segundos. También en este módulo, configure el Simulation Space a World y el Gravity Modifier a un valor negativo muy pequeño, digamos –0.1. Utilizar un espacio de simulación del mundo permite que el humo se mantenga dónde fue producido incluso cuando el vehículo se mueve. El efecto negativo de gravedad causa que las partículas de humo se eleven como si estuvieran compuestas de un gas caliente. Un buen toque extra es usar la pequeña flecha de menú junto a Start Rotation para seleccionar la opción Random Between Two Constants. Configure los dos valores a 0 y 360, respectivamente, y las partículas de humo girarán de manera aleatoria a medida que son emitidas. Tener muchas partículas que están alineadas idénticamente se nota mucho y se detrae del efecto de un camino de humo sin forma aleatorio.

En esta fase, las partículas de humo empiezan a verse reales y la tasa predeterminada de emisión crea un efecto “chugging” del motor. Sin embargo, el humo no se agita hacia afuera y se disipa todavía. Abra el módulo Color Over Lifetime y haga clic en la parada del gradiente superior en el extremo derecho del gradiente (esto controla la transparencia del valor “alpha” del color). Configure el valor alpha a cero y debe ver las partículas de humo desvanecerse a nada en la escena. Dependiendo de qué tan limpio su motor es, usted puede desear reducir el valor del alpha también del gradiente en el comienzo; El humo grueso y oscuro tiende a sugerir una combustión sucia e ineficiente.

Al igual que desvanecerse, el humo también debería aumentar en tamaño a medida que escapa y usted puede crear fácilmente este efecto con el módulo Size Over Lifetime. Abra el módulo, seleccione la curva y deslice la manija de la curva en el extremo izquierdo para hacer que las partículas comiencen en una fracción de su tamaño completo. El tamaño exacto que elija depende del tamaño del tubo de exosto, pero un valor ligeramente mayor que el tubo da una buena impresión de escape de gas. (Arrancar las partículas con el mismo tamaño que la tubería sugiere que el gas está sujeto a su forma por el tubo pero, por supuesto, el gas no tiene una forma definida). Utilice la simulación del sistema de partículas en el scene view para obtener una impresión visual buena de cómo el humo se ve. También puede aumentar el Start Size en el módulo del sistema de partículas en este punto si el humo no se dispersa lo suficiente como para crear el efecto que desea.

Finalmente, el humo debería disminuirse a medida que se dispersa. una manera fácil de hacer que esto suceda es con el módulo Force Over Lifetime. Abra el módulo y configure la opción de Space a Local y el componente Z de la fuerza a un valor negativo para indicar que las partículas son empujadas hacia atrás por la fuerza (el sistema emite las partículas a lo largo de la dirección Z positiva en el espacio local del objeto). Un valor de cerca de –0.75 funciona bastante bien para el sistemas y los otros parámetros se configuran como se sugiere arriba.

Uso

Usted puede posicionar el sistema de partículas del exosto al colocarlo en un objeto hijo del vehículo principal. Para unos juegos más simples, usted puede habilitar las propiedades Play On Awake y Looping y dejar que el sistema se ejecute. No obstante, en la mayoría de casos, podría querer variar al menos la tasa de emisión a medida que el vehículo se mueve. Esto primero es por autenticidad (ie, el motor produce más humo a medida que trabaja más duro) pero también ayuda a prevenir que las partículas de humo se mitiguen a medida que el vehículo se mueve. Un vehículo de movimiento rápido con una tasa de emisión demasiado baja parecerá producir distintas “caladas” de humo, lo cual es altamente poco realista.

Usted puede variar la tasa de emisión muy fácil desde un script. Si usted tiene una variable en el script que representa los engine revs o la velocidad del vehículo entonces usted puede simplemente multiplicar este valor por una constante y asignar el resultado a la propiedad emissionRate del ParticleSystem.

    // C#

    using UnityEngine;
    using System.Collections;

    public class PartScriptTestCS : MonoBehaviour {

        public float engineRevs;
        public float exhaustRate;

        ParticleSystem exhaust;


        void Start () {
            exhaust = GetComponent<ParticleSystem>();
        }
    

        void Update () {
            exhaust.emissionRate = engineRevs * exhaustRate;
        }

    }



    // JS

    var engineRevs: float;
    var exhaustRate: float;

    var exhaust: ParticleSystem;


    function Start() {
        exhaust = GetComponent.<ParticleSystem>();
    }


    function Update () {
        exhaust.emissionRate = engineRevs * exhaustRate;
    }

Ideas adicionales

El esquema básico crea una impresión muy convincente de humo de exosto, pero probablemente habrá notado que el “carácter” del motor cambia a medida que varía los parámetros. Un motor mal ajustado e ineficiente tiende a quemar su combustible de manera incompleta, dando como resultado un humo pesado y oscuro que persiste durante mucho tiempo en el aire. Esto sería perfecto para un viejo tractor de la granja pero no para un coche deportivo de alto rendimiento. Para un motor “limpio”, debe utilizar valores pequeños para la vida útil, la opacidad y el aumento de tamaño de las partículas. Para un motor “sucio”, debe aumentar estos valores y tal vez utilizar la propiedad Bursts del módulo Emission para crear la impresión de que el motor está salpicado.

Creating a simple explosion
Particle System vertex streams and Standard Shader support