我对编码有一些了解(在Python,C和XHTML中),我正在尝试理解Game Maker的基础知识。我创造了一个房间,敌人在移动,碰撞到墙壁和所有,但现在,我想在房间里随机产生,只要它们在地面上。现在,它只适用于我随机生成它们。
以下是我在obj_enemy
的Create事件中添加的代码,但显然有些东西无效,因为它根本不会产生任何敌人。
此外,不知道这是否重要,但如果我还没有在房间里放置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);
}
}
}
答案 0 :(得分: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);
}
}
}