0

我正在开发一款功能类似于太空入侵者的游戏。到目前为止,我让敌人在这样的 for 循环中生成:

for (var a=0; a<6; a++)
{ 
    var bd:MovieClip = new bdenemy();
    enemy1[a] = bd;
    addChild(enemy1[a]);
    enemy1[a].x = 50 + Math.random() * 700;
    enemy1[a].y = 50;
}

然而,当我运行游戏时,敌人只是在这些参数中产生,大部分时间都是重叠的。如何使用这样的数组使每个新敌人与前一个敌人保持 x 距离?谢谢。

4

1 回答 1

2

优化

在任何事情之前,您应该在循环之外声明您的变量以避免存储 n 个变量。

回答

填充宽度

您可以将之前的 x 存储在一个变量中,并确保每个敌人之间的距离最小。这是如果你想用敌人填满你的屏幕,不管他们有多少。

var bd:MovieClip;
var previousX:uint=0;
while (previousX + 150 < stage.stageWidth)
{ 
    bd = new bdenemy();
    enemy1.push(bd);
    addChild(bd);
    bd.x = previousX + 50 + Math.random() * 100;
    bd.y = 50;
}

50是两个敌人之间的最小差距。

固定值

如果你想有 6 个敌人,整齐地分布在屏幕上,你可以为每个敌人引入一个位置跨度。

var bd:MovieClip;
const N_ENEMIES:uint = 6;
var span:uint = stage.stageWidth / N_ENEMIES;
for (var i:int=0; i < N_ENEMIES; i++)
{ 
    bd = new bdenemy();
    enemy1[i] = bd;
    addChild(bd);
    bd.x = i * span + Math.random() * span;
    bd.y = 50;
}

在那里,每个敌人在其跨度内都会有一个随机位置。

于 2013-05-02T11:35:41.210 回答