*   >> Lezen Onderwijs artikelen >> science >> programming

Het creëren van een Flash-platform game met flixel en Flex - Squishing de player

SPEEL DE DEMO

Download de broncode

TUTORIAL INDEX

Er waren twee beperkingen met de bewegende blokken in de laatste tutorial. De eerste is dat de blokken onder de speler zou glijden. Dit kan eenvoudig worden opgelost met een regel code in de MovingBlock botsing functie

 overschrijven publieke functie botsen (Core: flxCore). Void {//.. if (contactFromTop) {if (Core.hitCeiling (dit )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}}

Hier gaan we de speler horizontaal met hetzelfde bedrag als het blok als de speler heeft botste met het blok van boven (dat wil zeggen dat staat op het).

De tweede beperking is dat de speler zou worden getransporteerd door de blokken in situaties waar het had moeten worden gepropt. Vast te stellen dat tot we nodig hebben om collision detection uit te voeren op de statische en bewegende blokken individueel

Eerst definiëren we een nieuwe FlxArray in de gamestate klasse aan de bewegende blokken te houden

 beschermd var movingBlocks..

: FlxArray = new FlxArray ();

Alle exemplaren van de MovingBlock klasse worden vervolgens geplaatst in de nieuwe array

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

In de update-functie die we botsingen doen op de bewegende blokken, en dan de statische Ones. Merk op dat de volgorde van de oproepen naar de FlxG collideArray functie van belang zijn: de bewegende blokken moeten worden verwerkt voordat de statische blokken.

Vervolgens kijken we of de speler is ingebed in elk van de blokken. Als het het is geplet, en we de playerSquash functie noemen

 openbare override functie update (): void {super.update ();. FlxG.collideArray (movingBlocks, speler); FlxG.collideArray (levelBlocks, speler); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (vijanden, levelBlocks); FlxG.overlapArrays (playerBullets, vijanden, bulletHitEnemy); FlxG.overlapArray (movingBlocks, speler, playerSquash); FlxG.

overlapArray (levelBlocks, speler, playerSquash); }

In de playerSquash functie we gewoon de dood van de speler. Voor een eigenlijke spel zou je waarschijnlijk verwijderen van een spelers leven en de stand opnieuw in deze functie

 privéaangelegenheid playerSquash (Collide1: flxCore, Collide2: flxCore):. Leegte {player.kill ();} 


Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.