我正在创造一个子弹地狱射击/小行星,我现在得到了随机小行星,但我想知道如何在每5-10颗小行星后产生一个随机敌舰,以使游戏更加细致。
我意识到我需要一个使用片段的计数器以及一个'if语句'但是我不知道该怎么做?如果可以,请帮忙。
var background = new Background;
background.x = 200;
background.y = 200;
addChild(background);
var ship = new Ship
ship.x = 125;
ship.y = 350;
addChild(ship);
var rocks = new Array(); // Create 10 rocks for
{
var rock = new Rock();
rock.x = Math.random() * stage.stageWidth;
rock.y = 0; rocks.push( rock );
addChild(rock);
}
stage.addEventListener(Event.ENTER_FRAME,stepDown);
function stepDown(event:Event)
{
// step down each rock
for ( var i = 0; i < 10; ++i )
{
rocks[i].y += 5;
// Check if rocks fall from stage than set it on new position
if ( stage.stageHeight < rocks[i].y )
{
rocks[i].y = 0;
rocks[i].x = Math.random() * stage.stageWidth
}
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_PressKeyToMove);
function fl_PressKeyToMove(event:KeyboardEvent):void
{
switch (event.keyCode)
{
case Keyboard.LEFT:
{
ship.x -= 15;
if (ship.hitTestObject(Wall2))
{
ship.x +=15 ;
}
break;
}
case Keyboard.RIGHT:
{
ship.x += 15;
if (ship.hitTestObject(Wall1))
{
ship.x -=15 ;
}
break;
}
}
}
ship.gotoAndStop("normal");
stage.addEventListener(Event.ENTER_FRAME,detectCollision);
function detectCollision(event:Event)
{
if(ship.hitTestObject(rock))
{
ship.gotoAndPlay("boom");
ship.stop();
stage.removeEventListener(KeyboardEvent.KEY_DOWN, fl_PressKeyToMove);
}
}
addChild(enemy);
答案 0 :(得分:0)
首先,你的代码似乎是硬编码来处理10个小行星。我
function stepDown(event:Event) {
// step down each rock
for ( var i = 0; i < 10; ++i )
您必须将其更改为:
function stepDown(event:Event) {
// step down each rock
for ( var i = 0; i < rocks.length; ++i )
在你的stepDown中你可能还需要遍历所有敌舰,所以添加到这个方法:
for (var i = 0; i < enemyShips.length; ++i)
因为你想要更新敌舰的位置
在您发布的代码中,我没有看到创建新岩石的方法(我看到了可能用于它的{}块。
要做下一个spawn,你需要调用方法。 在你的游戏循环中,当你决定是时候进行新的生成(摇滚或发货)时,调用spawn(),如下所示
var otherMobs = new Array();
var counter = 0;
function spawn() {
counter++;
if (counter % 10 == 0) {
spawnShip();
} else {
spawnRock();
}
}
function spawnShip() {
var enemyShip = new EnemyShip();
enemyShip.x = Math.random() * stage.stageWidth;
enemyShip.y = 0;
otherMobs.push( enemyShip );
addChild(enemyShip);
}
function spawnRock() {
var rock = new Rock();
rock =.x = Math.random() * stage.stageWidth;
rock =.y = 0;
rocks.push( rock = );
addChild(rock =);
}