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 ();}
Realiseringen af et 3D-spil med Ogre - Åbning af en Window
- Oprettelse af en database i Mysql
- ActivePerl Basic Syntaks
- Ekstra funktioner i Javascript String Regular Expressions
- Hvorfor det giver mening at Outsource Webudvikling Og Leje Php Developers
- ActivePerl Variable Typer og Context
- Container Bibliotek Sekvenser i C ++ Simplified
- ECMAScript String Regelmæssig Expressions
- Mobil Video Game Development: En hurtig Overview
- C Basic Syntax
- Variabler som Synonymer i PHP