*   >> Lese Utdanning Artikler >> science >> programming

Opprette en Flash plattformspill med Flixel og Flex - squishing player

spille demoen

laste ned kildekoden

TUTORIAL INDEX

Det var to begrensninger med flytting blokker i den siste opplæringen. Den første var at blokkene ville skyve under spilleren. Dette kan enkelt løses ved en linje med kode i MovingBlock kollisjon funksjon

 styre offentlig funksjon kolliderer (Kjerne: FlxCore):. Void {//.. if (contactFromTop) {if (Core.hitCeiling (dette )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}}

Her kan vi flytte spilleren horisontalt med samme beløp som blokken når spilleren har kollidert med blokken ovenfra (dvs. det står på det).

Den andre begrensningen var at spiller ville bli transportert gjennom blokkene i situasjoner hvor det skal ha blitt squished. For å fikse det opp må vi utføre dueller på den statiske og bevegelige blokker individuelt

Først definerer vi en ny FlxArray i GameState klassen for å holde de bevegelige blokker

 beskyttede Var movingBlocks..

: FlxArray = new FlxArray ();

Alle forekomster av MovingBlock klassen deretter plasseres i det nye utvalget

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

I oppdateringsfunksjonen vi gjør kollisjoner på de bevegelige blokker, og deretter de statiske seg. Legg merke til at rekkefølgen på samtaler til FlxG collideArray funksjon er viktig: de bevegelige blokker må behandles før de statiske blokker.

Vi kontrollerer deretter for å se om spilleren er innleiret i en av blokkene. Hvis det er det har blitt knust, og vi kaller playerSquash funksjonen

 offentlige styringsfunksjon oppdateringen (): void {super.update ();. FlxG.collideArray (movingBlocks, spiller); FlxG.collideArray (levelBlocks, spiller); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (fiender, levelBlocks); FlxG.overlapArrays (playerBullets, fiender, bulletHitEnemy); FlxG.overlapArray (movingBlocks, spiller, playerSquash); FlxG.

overlapArray (levelBlocks, spiller, playerSquash); }

I playerSquash funksjon vi bare drepe spilleren. For en faktisk spillet vil du sannsynligvis fjerne en spiller liv og start staten i denne funksjonen

 privat funksjon playerSquash (Collide1: FlxCore, Collide2: FlxCore):. Void {player.

kill ();}



Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.