我正在开发一个像太空入侵者一样的游戏。到目前为止,我已经在这样的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,使用这样的数组呢? 谢谢。
答案 0 :(得分: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;
}
在那里,每个敌人在其跨度内都会有一个随机位置。