Unity2D hierba alta


8

Estoy usando Unity para crear un juego 2D de arriba hacia abajo. Todo ha sido genial hasta ahora, pero me he encontrado con un problema que no puedo resolver adecuadamente.

Quiero implementar "áreas altas de hierba" donde se ocluya parte del personaje.

Un ejemplo visual:

Pensé en hacer la hierba alta por capas, pero eso crearía MUCHOS objetos del juego, y la transición a medida que el personaje se mueve hacia arriba no será lo suficientemente suave.

¿Alguna idea sobre cómo podría abordar esto? Pensé que tal vez usando shaders podría lograr algo como esto, pero mi conocimiento sobre shaders es muy limitado, por lo que ni siquiera sé si eso es posible.


66
A veces necesitas trabajar con MUCHOS objetos de juego, ya sabes.

Una especie de truco para evitar más objetos del juego sería reemplazar el sprite del jugador con una versión personalizada "isInGrass" del sprite (ejemplo muy burdo aquí ) mientras está en el césped y simplemente dibujarlo en la parte superior. Con un poco de arte agradable y un poco de transparencia en la parte inferior (para ayudar a que se mezcle con la hierba real), podría verse lo suficientemente bien.
Christian el

Pensé en ese enfoque pero, además de todo el trabajo que requeriría (necesitaríamos al menos dos veces como animaciones para cada actor al menos), la transición desde fuera del césped hacia adentro desde el escenario lateral (en la imagen de ejemplo: Fila superior , tercera columna), cuando la mitad del cuerpo está adentro y la otra mitad afuera, el resultado sería bastante desordenado.
Leo

2
Suena como una máscara o plantilla es lo que necesitas. Este hilo contiene información útil. Esta extensión demuestra de lo que estoy hablando, aunque no sé si hará exactamente lo que necesita.

1
¡Esto suena más o menos como lo que estaba buscando! Tendré que investigar un poco y experimentar con él. Si logro que algo funcione, lo publicaré como respuesta.
Leo

Respuestas:


1

Estoy de acuerdo con @Christian (aunque no lo llamaría un hack). Detecta la condición cuando el objeto debe verse diferente y luego simplemente dibuja diferente. Cada cosa en el juego no tiene que ser un "modelo" de cómo funciona en la "naturaleza". Es un error que he cometido muchas veces, por lo que se ha convertido en un mantra para mí. Pregúntese esto: ¿qué ganaría si el arbusto ocluye al jugador "de manera realista" en lugar de simplemente dibujar al jugador como debería verse? Puse esto entre comillas, porque al tratar de imaginar cómo se vería esto, creo que el enfoque de oclusión en capas en realidad puede parecer inferior.

Si su preocupación con el enfoque de @ Christian está en la gestión de la lista "potencialmente ilimitada" de pequeñas cosas que debe verificar en cada cuadro, este es otro error que he cometido muchas veces. Te recomiendo que "sigas con esto" por ahora y compruebes periódicamente cuánto tiempo ha pasado la lista, y si realmente se ha convertido en un problema . Una de dos cosas sucederá. O no se ha convertido en un problema, en cuyo caso, ¿por qué estás tratando de resolverlo? O lo ha hecho y necesita diseñar una solución (mínima) para resolverlo. No trate de resolver por la simulación de la misma.


0

¡Finalmente encontré una solución satisfactoria! El comentario de @Thebluefish me señaló la dirección correcta con máscaras.

La idea es usar un sombreador que dibuje al personaje en dos pasadas:

  • En la primera pasada, el personaje se representa normalmente, PERO estando completamente detrás de los arbustos.
  • En el segundo pase, lo vuelvo a dibujar, usando una máscara que olny dibuja la parte superior del personaje, encima de los arbustos.

Esto se hace incluso cuando el personaje no está dentro de los arbustos. De esta manera no tengo que detectar colisiones contra los arbustos, y también hace que la transición dentro del arbusto sea suave en casos límite como este:

La mitad del personaje que está fuera del arbusto se representa en la primera pasada. La otra mitad estará completamente ocluida por el arbusto.

En la segunda pasada, el personaje enmascarado se volverá a representar. La parte fuera del arbusto seguirá siendo la misma, pero la parte dentro del arbusto se representará en la parte superior con la máscara en la parte superior del arbusto, haciendo que parezca que está dentro del arbusto.


-1

Puedes detectar si el personaje está o no en la hierba. Luego dibuja solo la mitad superior del personaje.


Creo que esta respuesta ya fue sugerida. ¿Tiene detalles adicionales para agregar a su respuesta?
MichaelHouse
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.