*   >> läser Utbildning artiklar >> science >> programming

Skapa ett Flash plattformsspel med flixel och Flex - mosa den player

spela demo Omdömen

ladda ner källkoden Omdömen

TUTORIAL INDEX Omdömen

Det fanns två begränsningar med den rörliga block i den sista handledningen. Den första var att blocken skulle glida under spelaren. Detta kan lätt fastställas med en kodrad i kollisionsfunktionen MovingBlock Omdömen

 override public function kolliderar (Kärna: FlxCore):. Void {//.. if (contactFromTop) {if (Core.hitCeiling (detta )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}}

Här flyttar spelaren horisontellt med samma belopp som blocket när spelaren har kolliderat med kvarter från ovan (dvs det står på den). Omdömen

Den andra begränsningen var att spelare skulle transporteras genom blocken i situationer där det borde ha kortas. För att fixa det upp vi behöver för att utföra kollisionsdetektering på statiska och rörliga block individuellt Omdömen

Först definierar vi en ny FlxArray i GameState klassen för att hålla de rörliga blocken Omdömen

 skyddade Var movingBlocks..

: FlxArray = new FlxArray ();

Alla instanser av MovingBlock klassen placeras sedan i den nya arrayen Omdömen

 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 uppdateringsfunktion som vi gör kollisioner på de rörliga blocken, och sedan de statiska. Observera att ordningen av samtalen till FlxG collideArray funktionen är viktiga: de rörliga blocken måste bearbetas innan de statiska block.

Vi kontrollerar sedan att se om spelaren är inbäddad i något av blocken. Om det är det har klämd, och vi kallar playerSquash funktionen Omdömen

 public override uppdateringsfunktionen (): void {super.update ();. FlxG.collideArray (movingBlocks, spelare); FlxG.collideArray (levelBlocks, spelare); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (fiender, levelBlocks); FlxG.overlapArrays (playerBullets, fiender, bulletHitEnemy); FlxG.overlapArray (movingBlocks, spelare, playerSquash); FlxG.

overlapArray (levelBlocks, spelare, playerSquash); }

I playerSquash funktionen vi helt enkelt döda spelaren. För en verklig spel skulle du förmodligen ta bort en spelare liv och starta om tillståndet i denna funktion Omdömen

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

kill ();}



Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.