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