<р> скачать Исходный код
<р> Учебник ИНДЕКС
<р>, чтобы дать игроку что-то делать, мы будем добавить врагов. Эти враги будут довольно тупой, просто перемещая влево и вправо в верхней части блоков мы добавили. Даже если это не особенно продвинутый поведение, это было довольно распространенным с большим количеством старых 8/16 бит платформы игры.
<Р> Сначала мы определяем константу, которая управляет, сколько враги будут добавлены к уровню в класс GameState
защищен статической строительства ENEMY_COUNT: UINT = 10; <р> Затем мы добавляем FlxArray провести новые враги
охраняемые покупатель враги:.. FlxArray = новый FlxArray (); < р> Мы тогда сделать вызов новых функциональных addEnemies в конструкторе (после того как мы добавили блоки на уровне)
функция GameState общественности () {//... для (VAR J:.UINT = 0, J <р> Функция addEnemies разместит врагов на вершине блоков случайно на протяжении уровне Тем не менее, мы не можем разместить врага сверху любого блока, потому что есть хороший шанс, что в двух кварталах были. помещены в верхней части друг с другом, это означает, что нет места для нашего врага
защищенная функция addEnemies (): пустота {вар enemyCount: UINT = 0; для каждого. (Var block1: FlxBlock в this.levelBlocks) { вар enemyStartX: Number = block1.x; вар enemyStartY: Number = block1.y; вар сталкивается: Boolean = False; для каждого (VAR block2: FlxBlock в this.levelBlocks) {вар xCollision: INT = enemyStartX + (BLOCK_DIMENSIONS >> 1); вар xCollision2: INT = xCollision + BLOCK_DIMENSIONS; вар yCollision: INT = enemyStartY - (BLOCK_DIMENSIONS >> 1); вар yCollision2: INT = yCollision - BLOCK_DIMENSIONS; если (блок1! == блок2 && (block2.overlapsPoint (xCollision, yCollision) || block2.overlapsPoint (xCollision, yCollision2) || block2.overlapsPoint (xCollision2, yCollision) || block2.overlapsPoint (xCollision2, yCollision2))) { сталкивается = TRUE; ломать; }} <Р> Чтобы проверить это, мы петлю через блоки на уровне в два раза.
Таким образом, мы можем проверить каждый блок для столкновения в этом пространстве выше с любой другой блок в уровне. Мы должны найти блок, где площадь блока 2x2 (так 16x16 пикселей), выше в верхнем левом углу бесплатно (это потому, что наши враги занимают пространство 4 блоков).
<Р> Чтобы проверить это, мы должны Тест 4 точки в пространстве. Первый будет полквартала, и половина блока поперек. Это эффективно проверяет область выделены красным цветом н