Game maker 游戏制作者:在地面上的任意位置创建一个ennemy

Game maker 游戏制作者:在地面上的任意位置创建一个ennemy,game-maker,gml,Game Maker,Gml,我对编码(Python、C和XHTML)略知一二,并试图了解Game Maker的基础知识。我已经创建了一个房间,里面有敌人移动,与墙壁相撞等等,但是现在,我想在房间里随机繁殖敌人,只要他们在地面上。现在,它只在我随机繁殖它们时起作用 下面是我在创建敌人的事件中输入的代码,但显然有些东西不起作用,因为它根本不会产生任何敌人 另外,我不知道这是否重要,但如果我还没有在房间里放置一个obj_敌人,它们也不会产卵 // INIT // dir = -1; // direction moves

我对编码(Python、C和XHTML)略知一二,并试图了解Game Maker的基础知识。我已经创建了一个房间,里面有敌人移动,与墙壁相撞等等,但是现在,我想在房间里随机繁殖敌人,只要他们在地面上。现在,它只在我随机繁殖它们时起作用

下面是我在创建敌人的事件中输入的代码,但显然有些东西不起作用,因为它根本不会产生任何敌人

另外,我不知道这是否重要,但如果我还没有在房间里放置一个
obj_敌人
,它们也不会产卵

// 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);
        }
    }
}
//初始化//
dir=-1;//方向
移动速度=3;//移动速度
hsp=0;//水平速度
vsp=0;//垂直速度
重力=0.5;//重力
//创造//
//在房间中找到一个随机的X位置
var randx=随机(房间宽度);
//在房间里随机找一个Y位置
var randy=随机(房间高度);
//如果随机位置为空
如果位置_为空(randx,randy)
{
//如果有街区
//16像素以下
//随机Y位置
//(obj_敌人的精灵是32x32像素)
如果地点会议(randx,randy+16,obj_block01)
{
//如果少于4个ennemies

如果实例编号(obj_ennemy)这是obj_敌人的创建事件。如果房间中没有obj_敌人,则此代码将永远不会运行

您需要从房间中至少一个敌人开始,或者创建一个负责创建敌人的控制器对象(我建议使用这种方法)

此外,即使代码确实运行了,那么在正确位置越过墙繁殖敌人的机会也非常小,因此在看到它发生之前,您必须多次运行该程序。要避免这种情况,只需将繁殖代码放入while true循环,并在繁殖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);
     }

}
}

while(instance_number,obj_ennemy)在你的代码中用2个n表示“obj_ennemy”。这可能是你的问题。哦,是的,对不起,那是因为在法语中你用两个n表示“ennemi”,我刚刚注意到它在英语中的拼写不一样,所以我在更正这篇文章时更改了它,但忘了在代码中更改它。^