Estoy planeando un juego de simulación de negocios isométrico donde el jugador ve una oficina con los muebles habituales, como escritorios, pizarras, etc.
Los personajes (Staff / NPC's) dentro del juego deben interactuar con estos objetos realizando algunas tareas predefinidas como escribir en el teclado en el escritorio o escribir en la pizarra, etc.
Lo que me interesa, específicamente, es el siguiente escenario:
El personaje se mueve a través de la oficina (1) a su escritorio (2) y se sienta y comienza a escribir (3).
Por lo que entiendo, tendría una hoja de sprites para el movimiento del personaje (1) y un sprite estático para el escritorio (2), pero no entiendo cómo se manejaría el tercer paso.
¿Hay un sprite combinado que contenga tanto el escritorio como el personaje? Supongo que no, de lo contrario necesitaría tener una hoja de sprites para cada combinación de escritorio y personaje.
¿Cómo se maneja esto normalmente?
EDITAR:
Aquí hay una animación de ejemplo específica del juego Theme Hospital. Puedes ver el video aquí .
Hasta donde puedo ver, la animación se divide en varios pasos.
Paso 1 - El personaje se mueve entre el escritorio y la silla.
Esto sugiere que la silla y el escritorio son de hecho sprites separados.
Paso 2: el personaje se sienta en la animación
Observe cómo en el último cuadro la silla está más cerca del escritorio.
Paso 3: animaciones de escritorio
Paso 4 - Animación de pie
Es lo mismo que sentarse pero jugar al revés.
Paso 5 - Aléjate
Utilice la animación de movimiento normal para alejarse.
La pregunta que tengo es cómo se separan mejor estas animaciones y cómo un artista gráfico generalmente las proporcionaría.
¿Está el personaje sentado y escribiendo en el escritorio en realidad tres sprites diferentes (escritorio, personaje y silla)? ¿Alguien sabe algún ejemplo de sprites de animaciones similares?
EDITAR 2:
Supongo que mi mayor preocupación es que tengo las expectativas correctas sobre cómo se verán realmente los sprites. No puedo dibujarlos yo mismo, así que tendré que pagarle a alguien para que lo haga y supongo que hay algún tipo de mejor práctica para hacer este tipo de animaciones.
Una idea alternativa sería incluir una imagen de Buffer de Profundidad / Z con sus sprites similar a cómo las API 3D (OpenGL) aseguran que los polígonos no se superpongan. Para un juego de sprites básico, podría ser solo un montón de 0/1 bits (mapa de bits en blanco y negro) (aunque podría usar más niveles de profundidad si lo desea).
Si tiene un sprite combinado de 'silla de escritorio' y desea que la silla aparezca frente a cualquier otro sprite (es decir, personas) en ese cuadrado, haría que la versión Z-Buffer del char 'negro' mientras que el escritorio sería 'blanco' .
Cuando renderiza el sprite dinámico (una persona) en ese mosaico, verificará qué color hay en el búfer de profundidad. Para los píxeles que son 0 (negro), omite dibujar los píxeles de los sprites de la persona y simplemente deja los de la silla allí.
En lugar de verificar cada píxel 1 a la vez, una forma más simple de hacer la comprobación sería multiplicar los píxeles del sprite por el valor del búfer de profundidad ya que la profundidad más cercana sería 0 y cancelar el. Entonces, por supuesto, tiene que teclear (a menos que tenga un canal de color alfa).
Por supuesto, esto agrega gastos generales (aunque podría omitirlo para cualquier cosa que no necesite múltiples niveles de profundidad como una silla de escritorio). También debe sincronizar sus animaciones (es decir, la persona tendría que coincidir con la animación de la silla de escritorio). No le da la misma flexibilidad de tener un montón de sprites separados.
fuente