Hola amigos de 8 bits de poder
En esta ocasión os traigo un pequeño truco motivado por un desarrollador que quería cambiar la dirección de salto de un personaje en mitad de una ruta
Supongamos que quieres que tu personaje salte hacia la
derecha y en mitad del sato quieres que el personaje pueda cambiar hacia la
izquierda, continuando el salto. Lo que estamos planteando se puede representar
con este dibujo:
En este ejemplo nuestro personaje salta y en mitad de la ruta
de salto hacia la derecha, cambia de dirección en el punto 2, continuando con
la ruta de salto a la izquierda, pero sin comenzar un nuevo salto, simplemente
continuando el salto y alcanzando la misma altura (punto 3) que alcanzaría con
el salto hacia la derecha para finalmente terminar el salto a la izquierda en
el punto 4.
Para poder hacer esto necesitamos cambiar la ruta a nuestro
personaje desde basic en el punto 2, pero no podemos usar el comando SETUPSP
porque ello iniciaría la ruta, obteniendo un salto mucho mayor, que comenzaría en
el punto 2. Lo que podemos hacer en ese caso es simplemente un POKE a la dirección
de memoria que almacena la ruta del Sprite, que es la dirección de su estado +15,
tal como muestra la tabla de atributos de sprites.
130 'ciclo
de juego ------
150 |AUTOALL,1:|PRINTSPALL,0,1,0
170 '
rutina movimiento personaje -----
173 IF PEEK(27000)<128 THEN 178
174 'estamos
en mitad de un salto
175 IF INKEY(27)=0 THEN POKE
27015,0:GOTO 180:'cambio ruta a derecha
176 IF INKEY(34)=0 THEN POKE
27015,1:GOTO 180:'cambio ruta a izq
177 GOTO 193
178 IF INKEY(67)=0 THEN
|SETUPSP,0,0,137:|SETUPSP,0,15,dir:'saltar
180 IF INKEY(27)=0 THEN
dir=0:|SETUPSP,0,6,1:'ir derecha
190 IF INKEY(34)=0 THEN
dir=1:|SETUPSP,0,6,-1:'ir izquierda
193 ciclo=ciclo+1
La única limitación del uso de POKE para este propósito es
que la imagen del personaje no cambia hasta que no encuentra un código de cambio
de imagen en mitad de la ruta. Cambiar la imagen usando SETUPSP es posible pero
peligroso, ya que no sabes si el personaje esta subiendo (borrado con líneas inferiores)
o bajando (borrado con líneas superiores). Por ello es mejor simplemente
asignar la ruta y que la propia ruta cambie la imagen lo antes posible. Puedes
incluso poner en mitad de la ruta cambios de imagen aimque no sean necesarios por
si ocurre esta circunstancia.
No hay comentarios:
Publicar un comentario