Red de conocimiento informático - Conocimiento del nombre de dominio - ¿Cómo se logra el efecto suave de niebla de guerra?

¿Cómo se logra el efecto suave de niebla de guerra?

Debido a que estamos creando un juego en 2D, nuestras ideas son básicamente 2D, pero también tenemos ideas en 3D, como el uso de combinación de capas. El principio fundamental es revertir el borrado según el valor alfa de la imagen (cuando se borra por completo, alfa es 1, y cuanto más pequeño es el alfa, más opaco es, logrando un efecto de procesamiento de gradiente). Al final, se utilizaron dos métodos relativamente simples para lograr este efecto, con ligeras diferencias entre ellos. Lo siguiente se implementa usando AS3. El código fuente también proporciona varias imágenes de degradado, que se pueden usar como fuentes de luz puntuales para pulir la niebla. Puede reemplazarlas para ver varios efectos.

El primer principio que me viene a la mente se basa en la implementación previa de un efecto de fuente de luz puntual similar. Borre la niebla de guerra correspondiente a través de una capa con un mapa de máscara alfa, que es la versión móvil del efecto de luz puntual ampliada. Primero está el fondo del personaje, luego agrega una capa de niebla de guerra en la capa superior, agrega una fuente de luz puntual en el personaje y luego, cuando el personaje se mueve, la capa de fuente de luz puntual ya no se dibujará y el La capa de fuente de luz se hará más grande. Naturalmente, la niebla se hará cada vez más grande. Esto expande continuamente la máscara a medida que el personaje se mueve. Excepto por el mapa de máscara sintetizado al principio, el procesamiento posterior es el mismo que el mecanismo de implementación de la máscara de guía para principiantes y la fuente de luz puntual mencionado anteriormente. El código relevante se proporcionará más adelante. Sin embargo, una desventaja de esta implementación es que la fusión de alfa hará que el rango se vuelva más brillante de repente (debido a que la suma de alfa es mayor que 1, todos se borran y la mayoría se vuelven más brillantes, es decir, habrá un brillo gradual). efecto, tal que se enciende la niebla de guerra) no es tan real).

Método para borrar directamente la niebla de guerra (función de borrador)

En pruebas reales, el método de borrado de máscara no es muy satisfactorio. Así que lo estudié de nuevo y pensé en el efecto del borrador. ¿Qué pasa si uso directamente una fuente de luz puntual para borrar la niebla de guerra de la imagen poco a poco? Rápidamente miré más de cerca las API relevantes y descubrí que realmente tienen efectos de implementación similares. Principalmente el método de dibujo de bitmapData, la atención se centra en el cuarto parámetro de este método, por lo que cada vez que estamos en el nivel de niebla de guerra, según el movimiento del jugador, llamamos al método de dibujo para dibujar al personaje usando una fuente de luz puntual. imagen a BitmapData en la niebla de guerra y luego borre de acuerdo con el alfa establecido por los parámetros para revelar el fondo final. Eso es todo.