*   >> Leitura Educação Artigos >> science >> programação

Criando um jogo de plataforma flash com Flixel e Flex - Squishing o jogador

jogar o demo

BAIXAR O CÓDIGO FONTE

TUTORIAL INDEX

Há duas limitações com os blocos que se deslocam no último tutorial. A primeira era que os blocos que deslizam debaixo do jogador. Isso pode ser facilmente corrigido com uma linha de código na função de colisão MovingBlock

 substituir a função pública colidem (Núcleo: FlxCore):. Void {//.. if (contactFromTop) {if (Core.hitCeiling (isto )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}}

Aqui nós mover o aparelho horizontalmente pelo mesmo valor do bloco quando o jogador tenha colidido com o bloco de cima (ou seja, está de pé sobre ela).

A segunda limitação foi que a ser transportado jogador iria através dos blocos em situações em que deveria ter sido esmagados. Para consertar isso, precisamos realizar a detecção de colisão na estática e em movimento blocos individualmente

Primeiro vamos definir uma nova FlxArray na classe gamestate para manter os blocos em movimento

 movingBlocks var protegidas..

: FlxArray = new FlxArray ();

Todas as instâncias da classe MovingBlock são então colocados na nova matriz

 this.movingBlocks.add (this.add (novo MovingBlock (32, 64, 0, 0 , LEVEL_DIMENSIONS >> 1, LEVEL_DIMENSIONS - BLOCK_DIMENSIONS * 3, BLOCK_DIMENSIONS * 2, BLOCK_DIMENSIONS * 2, TechTilesImage))); 

Na função de atualização que fazemos colisões nos blocos que se deslocam, e, em seguida, as estáticas. Note que a ordem das chamadas para a função FlxG collideArray são importantes: os blocos móveis têm de ser processadas antes de os blocos estáticos.

Em seguida, verifica para ver se o jogador está incorporado em qualquer um dos blocos. Se é que foi esmagado, e chamamos a função playerSquash

 public override atualização function (): void {super.update ();. FlxG.collideArray (movingBlocks, leitor); FlxG.collideArray (levelBlocks, leitor); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (inimigos, levelBlocks); FlxG.overlapArrays (playerBullets, inimigos, bulletHitEnemy); FlxG.overlapArray (movingBlocks, jogador, playerSquash); FlxG.

overlapArray (levelBlocks, jogador, playerSquash); }

Na função playerSquash nós simplesmente matar o jogador. Para um jogo real, você provavelmente tiraria uma vida jogadores e reinicie o estado nesta função

 playerSquash função privada (Collide1: FlxCore, Collide2: FlxCore):. Void {player.

kill ();}



Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.