2016-02-07 60 views
1

我知道一點編碼建立在隨機位置的ennemy(在Python,C和XHTML),我試圖瞭解遊戲製作的基本知識。我已創建了敵人移動,撞擊到牆壁和所有的房間,但現在,我想在房間裏隨機產卵的敵人,只要他們是在地面。目前,它只在我隨機產卵時纔有效。遊戲製造商:地上

這裏是我把的obj_enemy但顯然一些創建活動不能正常工作,因爲它沒有產卵任何敵人的所有代碼。

而且,不知道它的問題,但如果我還沒有放在自己的obj_enemy在房間裏,他們不產卵既不...

// INIT // 
dir = -1;  // direction 
movespeed = 3; // movement speed 
hsp = 0;  // horizontal speed 
vsp = 0;  // vertical speed 
grav = 0.5; // gravity 

// CREATE // 
// Find a random X position in the room 
var randx = random(room_width); 
// Find a random Y position in the room 
var randy = random(room_height); 

// If the random position is empty 
if position_empty (randx, randy) 
{ 
    // If there is a block 
    // 16 pixels under 
    // the random Y position 
    // (the sprite of obj_enemy is 32x32 pixels) 
    if place_meeting (randx, randy+16, obj_block01) 
    { 
     // If there is less than 4 ennemies 
     if instance_number (obj_ennemy) <= 4 
     { 
      // Create an ennemy 
      instance_create(randx, randy, obj_ennemy); 
     } 
    } 
} 

My room

+0

在你的代碼,它說:「obj_ennemy」與2個n的方式。這可能是你的問題。 –

+0

哦,是對不起,那是因爲在法國,你說「ennemi」有兩個n的,我只注意到它不是在英語拼寫相同,所以糾正這個帖子的時候我改變它,但忘了改它的代碼。 ^^」 – UKDP

回答

1

這是obj_enemy的創建事件。如果房間裏沒有obj_enemy,那麼這段代碼永遠不會運行!

您也需要開始在房間至少一個敵人或創建負責創建,你投入了房間,而不是敵人的控制器對象(我推薦這種方法)。

此外,即使代碼確實運行,在正確的位置產生一個敵人在牆上的機會也非常小,所以在你看到它發生之前你必須多次運行該程序。爲了避免這種情況只是把產卵代碼放到一個真正的同時循環,脫離了一次4個敵人已經產生了:

while (instance_number (obj_ennemy) <= 4) 
{ 
// Find a random X position in the room 
var randx = random(room_width); 
// Find a random Y position in the room 
var randy = random(room_height); 

// If the random position is empty 
if position_empty (randx, randy) 
{ 
    // If there is a block 
    // 16 pixels under 
    // the random Y position 
    // (the sprite of obj_enemy is 32x32 pixels) 
    if place_meeting (randx, randy+16, obj_block01) 
    { 

     // Create an ennemy 
     instance_create(randx, randy, obj_ennemy); 
    } 

} 
}