*   >> Чтение Образование Статьи >> science >> programming

Создание платформы флэш-игры с Flixel и Flex - хлюпающие игрока

<р> Играть демо

<р> Загрузить исходный код ИСТОЧНИК

<р> Учебник INDEX

<р> Были два ограничения с движущимися блоков в прошлом уроке. Во-первых, блоки будут скользить под игрока. Это может быть легко исправлена ​​с одной строки кода в функции MovingBlock столкновения

 переопределить публичную функцию сталкиваются (Core: FlxCore):. Недействительными {//.. если (contactFromTop) {если (Core.hitCeiling (это )) {Core.y = this.y - Core.height; Core.last.y = Core.y; Core.x + = this.x - this.last.

x; }}} <Р> Здесь мы переместить игрока по горизонтали на ту же сумму, как блока, когда игрок столкнулся с блоком сверху (т.е. стоит на нем).

<Р> Второе ограничение было то, что Игрок будет транспортироваться через блоки в ситуациях, когда это должно было быть сплющенные. Чтобы исправить это до нас нужно выполнить обнаружение столкновений на статичных и движущихся блоков индивидуально

<р> Во-первых, мы определим новую FlxArray в классе GameState провести подвижные блоки

 защищенные покупатель movingBlocks..

: FlxArray = новый FlxArray (); <р> Все экземпляры класса MovingBlock помещают в новый массив

 this.movingBlocks.add (this.add (новый MovingBlock (32, 64, 0, 0 , LEVEL_DIMENSIONS >> 1, LEVEL_DIMENSIONS - BLOCK_DIMENSIONS * 3, * 2 BLOCK_DIMENSIONS, BLOCK_DIMENSIONS * 2, TechTilesImage))); <р> В функции обновления мы делаем столкновений на движущихся блоков, а затем статических. Обратите внимание, что порядок вызова функции FlxG collideArray важны: движущиеся блоки должны быть обработаны до статических блоков. Затем мы проверяем, чтобы убедиться, встроен проигрыватель в любом из блоков.

Если это было сжато, и мы вызываем функцию playerSquash

 общественного переопределения обновление функции (): недействительным {super.update ();. FlxG.collideArray (movingBlocks, игрок); FlxG.collideArray (levelBlocks, игрок); FlxG.collideArrays (playerBullets, levelBlocks); FlxG.collideArrays (враги, levelBlocks); FlxG.overlapArrays (playerBullets, враги, bulletHitEnemy); FlxG.overlapArray (movingBlocks, игрок, playerSquash); FlxG.overlapArray (levelBlocks, игрок, playerSquash); } <р> В функции playerSquash мы просто убить игрока.

Для реальной игре вы, вероятно, удалить существующие игроки и перезагрузите состояние этой функции

 частные функции playerSquash (Collide1: FlxCore, Collide2: FlxCore):. {Недействительными player.kill ();} <р> 


Copyright © 2008 - 2016 Чтение Образование Статьи,https://ru.nmjjxx.com All rights reserved.