Moviéndose a los ángulos
Bueno, todo eso está muy bien y es bueno para tener movimiento de Sonic suavemente sobre el terreno con diferentes alturas. Pero de eso no es todo lo que hay en el motor. La velocidad de Sonic tiene que ser atenuada por la baja en ángulo con el fin de ser realistas.
Hay dos formas en las que se ve afectada la velocidad de Sonic en los ángulos. El primero se asegura de que él no atraviesa una colina en la misma cantidad de tiempo como caminar sobre una superficie plana de un ancho igual. El segundo lo hace más lento cuando se va cuesta arriba, y lo acelera cuando va cuesta abajo. Echemos un vistazo a cada uno de ellos a su vez.
Las tres variables de velocidad
Si fuera un juego de plataformas de Sonic simple que no requiere, pero los bloques, sólo se necesitan dos variables de velocidad: velocidad X ( xsp ) e Y la velocidad ( YSP ), las componentes horizontal y vertical de la velocidad de Sonic. Aceleración ( ACC ), la desaceleración ( diciembre ), y la fricción ( FRC ) se añaden a xsp ; la velocidad de salto ( JMP ) y gravedad ( GRV ) se añaden a YSP (cuando Sonic está en el aire).
Pero cuando se trata de pistas, mientras que los movimientos de Sonic a lo largo de una pendiente, se mueve tanto horizontal como verticalmente. Esto significa que tanto xsp y YSP tienen un valor distinto de cero. Simplemente añadiendo según , diciembre , o FRC de xsp ya no funciona, imagínate Sonic fue tratando de correr por una pared - la adición a su velocidad horizontal sería inútil, porque él tiene que moverse hacia arriba.
El truco consiste en utilizar una variable de tercera velocidad (como el motor original lo hace), así que vamos a llamar a que la velocidad baja ( Gsp ). Esta es la velocidad de Sonic por el suelo, sin tener en cuenta el ángulo por completo. según , diciembre , y FRC se aplican a Gsp no xsp o YSP .
Si bien en el suelo, xsp y YSP se derivan de Gsp cada paso antes de Sonic se mueve. Tal vez un ejemplo de pseudo-código es con el fin de:
XSP = Gsp * cos (ángulo);
YSP = Gsp *-sen (ángulo);
X + = xsp;
Y + = Yo sí puedo;
No importa lo que ocurre con el ángulo, Gsp se mantienen, por lo que el motor siempre sabe lo que la velocidad de Sonic es "realmente" se mueve a.
Factor de pendiente
En este punto, Sonic debe ser capaz de manejar cualquier colinas con una velocidad precisa. Pero él todavía tiene que ser frenado cuando se va cuesta arriba, y aceleró al yendo cuesta abajo.
Afortunadamente, esto es fácil de lograr - con algo que se llama el factor de pendiente ( SLP ). Sólo tiene que añadir SLP * sen ( ángulo ) de Gsp al comienzo de cada paso. El valor de SLP es siempre 0,125 ($ 0,020) cuando se ejecuta, pero no así al rodar. Cuando Sonic está rodando cuesta arriba (el signo de Gsp es no igual a la señal del pecado ( ángulo )), slp es 0.078125 ($ 001E). Cuando Sonic está rodando cuesta abajo (el signo de Gsp es igual a la señal del pecado ( ángulo )), slp es 0,3125 ($ 0050).
Nota: En Sonic 1, parece que SLP no se agregan si Sonic se detiene, y en su pie / en espera del ciclo. Sin embargo, en Sonic 3 & Knuckles, SLP parece que se añadirán aún así, de manera que Sonic no puede estar parado en pendientes pronunciadas - que va a obligarlo a caminar hacia atrás abajo de ellos.
Saltos En los ángulos
Salto también se ve afectada por el ángulo de Sonic es menos cuando lo hace. Él simplemente no puede establecer YSP a JMP - que necesita para saltar de distancia desde el ángulo que está de pie. En cambio, tanto xsp y YSP se debe establecer en jmp , usando cos () y el pecado () para obtener los valores correctos.
Más pseudo-código:
XSP - = jmp * sen (ángulo);
YSP - = jmp * cos (ángulo);
Users browsing this forum: No registered users and 5 guests