*   >> Lectura Educación Artículos >> science >> programación

Creación de un juego de plataformas de Flash con Flixel y Flex - aplastando la player

JUGAR LA DEMO

DESCARGAR EL CÓDIGO FUENTE

INDICE TUTORIAL

Hay dos limitaciones con el movimiento bloques en el último tutorial. La primera era que los bloques se deslice debajo del reproductor. Esto se puede solucionar fácilmente con una sola línea de código en la función de colisión MovingBlock

 anula la función pública colisionar (Core: FlxCore):. Void {//.. si (contactFromTop) {if (Core.hitCeiling (esto )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}}

Aquí nos movemos el jugador horizontalmente por la misma cantidad que el bloque cuando el jugador ha colisionado con el bloque de arriba (es decir, que está de pie sobre ella).

La segunda limitación es que el jugador sería transportado a través de los bloques en situaciones en las que debería haber sido aplastado.

Para solucionar eso que necesitamos para llevar a cabo la detección de colisiones en la estática y bloques en movimiento individual

En primer lugar definimos una nueva FlxArray en la clase gamestate para mantener los bloques móviles

 movingBlocks var protegidas..: FlxArray = new FlxArray (); 

Todas las instancias de la clase MovingBlock se colocan en la nueva matriz

 this.movingBlocks.add (this.

add (nueva MovingBlock (32, 64, 0, 0 , LEVEL_DIMENSIONS >> 1, LEVEL_DIMENSIONS - BLOCK_DIMENSIONS * 3, BLOCK_DIMENSIONS * 2, BLOCK_DIMENSIONS * 2, TechTilesImage)));

En la función de actualización que hacemos las colisiones en los bloques en movimiento, y luego los estáticos. Tenga en cuenta que el orden de las llamadas a la función FlxG collideArray son importantes: los bloques móviles tienen que ser procesados ​​antes de que los bloques estáticos. Luego comprobamos si el jugador está incrustado en cualquiera de los bloques.

Si es que ha sido aplastado, y llamar a la función playerSquash

 actualización de la función public override (): void {super.update ();. FlxG.collideArray (movingBlocks, jugador); FlxG.collideArray (levelBlocks, jugador); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (enemigos, levelBlocks); FlxG.overlapArrays (playerBullets, enemigos, bulletHitEnemy); FlxG.overlapArray (movingBlocks, jugador, playerSquash); FlxG.overlapArray (levelBlocks, jugador, playerSquash); } 

En la función playerSquash simplemente matar al jugador.

Para un juego real es probable que quitar una vida jugadores y reinicie el estado en esta funció

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lectura Educación Artículos,https://lectura.nmjjxx.com All rights reserved.