Haz que el jugador corra hacia las escaleras sin problemas
11
Tengo un juego de Plataforma 2D, donde el jugador siempre corre hacia la derecha, pero el terreno no siempre es horizontal. Ejemplo:
Implementé un sistema de colisión de cuadro delimitador que solo verifica las intersecciones con el cuadro de jugador y los otros bloques, para evitar que el jugador corra si encuentra un gran bloque, por lo que tiene que saltar, pero cuando coloco escaleras, quiero que lo haga. correr sin problemas al igual que él en el suelo horizontal. ¡Con el sistema de colisión tienes que saltar las escaleras para pasarlas!
Pensé en generar una línea entre los bordes de las escaleras e imponer el movimiento del jugador en esa línea ... ¿Qué piensas? ¿Hay algo más inteligente que hacer?
Si puede rotar los cuadros delimitadores, habría puesto una caja girada de 45 grados a los pies del jugador y la combinaría con una caja no girada para representar el resto del cuerpo. Eso podría hacer que el reproductor se deslice automáticamente sobre algo lo suficientemente pequeño.
Sin embargo, eso probablemente causaría un recorte con el modelo del jugador y las escaleras.
Otra idea es poner un cuadro delimitador de la cabeza del personaje a kness con un ancho mayor que el cuadro del personaje.
Cuando el jugador colisiona con algo que la casilla 'A' no puede hacer, puedes mover al jugador encima de lo que colisionó
_________________
||||||||| A | pla | A ||____| yer |____||| _________________________ <- step
|||---------------------------------------------<- ground
Hay tres enfoques generales para lidiar con las escaleras en los videojuegos:
El enfoque de "Mario" es que debes saltar para subir las escaleras.
El enfoque de "Castlevania" es que subir / bajar escaleras es un tipo diferente de movimiento; debe presionar 'arriba' en el controlador, y se reproduce una animación especial de "subir escaleras" para atravesar las escaleras. Una variante de esto es el enfoque de "Resident Evil", donde subir y bajar escaleras se trata como una escena completa que se reproduce cuando el jugador presiona un botón de interacción; no se permite subir escaleras interactivas en absoluto.
El enfoque de "Casi todos los demás" es el que usted mencionó: trate las escaleras como si realmente fueran una rampa. Dependiendo de qué tipo de juego sea, es posible que desee colocar la rampa a diferentes alturas en relación con las escaleras. Por lo general, en un juego en 2D, el truco "las escaleras son en realidad una rampa" es menos notable para el jugador si la rampa está nivelada con las esquinas inferiores de cada escalón, mientras que en un juego en 3D generalmente es menos notable si la rampa está nivelada con las esquinas superiores de cada paso. (como en un juego en 2D, es más fácil notar si los pies de un personaje están flotando sobre el suelo, por lo que debes minimizar eso, mientras que en un juego en 3D es más fácil notar si los pies de un personaje se están recortando en el suelo, y entonces quiero minimizar eso).
Gran observación sobre flotación / recorte en diferentes puntos de vista gráficos.
Kroltan
Su información es bastante incorrecta. Solo en los viejos juegos de Mario tienes que saltar para subir las escaleras. Pero supongo que es obvio. ¡Pero el mal residente definitivamente también tenía escaleras que se pueden subir interactivamente!
Tara
4
La mayoría de los métodos que he encontrado ya se han mencionado anteriormente, pero todavía hay uno más que no se ha mencionado. Cuando el jugador encuentra un obstáculo vertical que es lo suficientemente corto (digamos, 1/3 de su altura), simplemente colóquelo en la parte superior. Minecraft y el motor de Source, por ejemplo, toman este enfoque en ese tipo de situación. Además, este método le permite seguir utilizando AABB puro para toda la física sin dejar al jugador en el dolor de tener que subir escaleras constantemente.
Sería bueno si pudiera explicar cómo detectar tales obstáculos.
Tara
0
Actualmente estoy trabajando en una parte similar de un motor, y la forma en que traté con las escaleras / pendientes es contando los píxeles transparentes en la textura de mi rampa y compensando el objeto del jugador por la cantidad encontrada.
Me imagino que eso es lo que realmente querrías hacer, y puedes elegir reproducir una animación diferente que se reproduzca de acuerdo con la ascensión de las escaleras.
La mayoría de los métodos que he encontrado ya se han mencionado anteriormente, pero todavía hay uno más que no se ha mencionado. Cuando el jugador encuentra un obstáculo vertical que es lo suficientemente corto (digamos, 1/3 de su altura), simplemente colóquelo en la parte superior. Minecraft y el motor de Source, por ejemplo, toman este enfoque en ese tipo de situación. Además, este método le permite seguir utilizando AABB puro para toda la física sin dejar al jugador en el dolor de tener que subir escaleras constantemente.
fuente
Actualmente estoy trabajando en una parte similar de un motor, y la forma en que traté con las escaleras / pendientes es contando los píxeles transparentes en la textura de mi rampa y compensando el objeto del jugador por la cantidad encontrada.
Es similar a la idea del mapa de altura que se detalla en este artículo: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves
Me imagino que eso es lo que realmente querrías hacer, y puedes elegir reproducir una animación diferente que se reproduzca de acuerdo con la ascensión de las escaleras.
También hay una buena descripción de los diferentes conceptos de pendiente en este artículo: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/
fuente