2013-05-02 33 views
0

我正在開發一個類似太空侵略者的遊戲。到目前爲止,我的敵人在產卵循環是這樣的:用於定位敵人的AS3循環

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的距離,使用這樣的數組? 謝謝。

回答

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; 
} 

在那裏,每個敵人在其範圍內都會有一個隨機位置。

+0

非常感謝你,這個想法正是我想到的產卵。 – Chivkins 2013-05-02 11:52:43