*   >> Læs Uddannelse artikler >> science >> programming

Oprettelse af en Flash-platform spil med flixel og Flex - squishing afspilleren

afspille DEMO

hente kildekoden

TUTORIAL INDEX

Der var to begrænsninger med de bevægelige blokke i den sidste tutorial. Den første var, at blokkene ville glide under afspilleren. Dette kan let ordnes med én linje kode i MovingBlock kollision funktionen

 tilsidesætte offentlig funktion kolliderer (Core: FlxCore):. Ugyldig {//.. hvis (contactFromTop) {if (Core.hitCeiling (dette )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}}

Her bevæger vi os spilleren vandret med samme beløb som blokken, når spilleren har kolliderede med blokken ovenfra (dvs. den står på det).

Den anden begrænsning var, at spiller vil blive transporteret gennem blokkene i situationer, hvor det skulle have været squished. For at rette det op, vi skal udføre kollisionsdetektion på statiske og bevægelige blokke individuelt

Først skal vi definere en ny FlxArray i GameState klassen til at holde de bevægelige blokke

 beskyttede Var movingBlocks..

: FlxArray = nye FlxArray ();

Alle forekomster af MovingBlock klasse anbringes derefter i den nye matrix

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

I opdateringsfunktionen vi gør sammenstød på de bevægelige blokke, og derefter de statiske dem. Bemærk, at rækkefølgen af ​​opkald til den FlxG collideArray funktionen er vigtige: de bevægelige blokke skal behandles, før de statiske blokke.

Vi derefter kontrollere, om spilleren er indlejret i nogen af ​​blokkene. Hvis det er det er blevet mast og vi kalder playerSquash funktionen

 offentlige overstyringsfunktion opdatering (): void {super.update ();. FlxG.collideArray (movingBlocks, spiller); FlxG.collideArray (levelBlocks, spiller); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (fjender, levelBlocks); FlxG.overlapArrays (playerBullets, fjender, bulletHitEnemy); FlxG.overlapArray (movingBlocks, afspiller, playerSquash); FlxG.

overlapArray (levelBlocks, afspiller, playerSquash); }

I playerSquash funktionen vi simpelthen dræbe spilleren. For en selve spillet ville du sikkert fjerne en spillerne liv og genstart staten i denne funktion

 private funktion playerSquash (Collide1: FlxCore, Collide2: FlxCore):. Void {player.

kill ();}



Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.