GML向右移动使对象向右移动

时间:2019-02-13 07:08:30

标签: game-maker game-maker-language game-maker-studio-1.4

所以基本上在步骤命令行中我有这段代码

if BugType = 1 {
if instance_exists(Obj_Food_Small){
move_towards_point(Obj_Food_Small.x, Obj_Food_Small.y, 3)
}
} else {
    move_towards_point(Obj_Ant_Home.x, Obj_Ant_Home.y, 3);
}

我想让它测试是否存在食物对象,以及是否有向食物移动的方式,从而将错误类型转换为2,然后蚂蚁将回到家中,除了创建时的蚂蚁只是移到是的,那里没有任何食物。 谢谢任何人的帮助。

2 个答案:

答案 0 :(得分:0)

您的括号过多。我已经删除了提取括号并格式化并更改了代码。我建议不检查BugType是1还是2,而建议您在有食物或没有食物的情况下仅将其分配为1或0。

从文档中读取

  

布尔值只是一个可以为true或false的值。请注意,当前GameMaker:Studio不支持“ true”布尔值,实际上接受小于0.5的任何实数作为false值,并且接受等于(或大于)0.5的任何实数作为true。

因此,您只需检查BugType是true(大于等于0.5)还是false(小于0.5)即可。

var Song = Backbone.Model.extend();

var Songs = Backbone.Collection.extend({
    model : Song
});

var songs = new Song([
    new Song ({titulo: "Canción 1"}),
    new Song ({titulo: "Canción 2"}),
    new Song ({titulo: "Canción 3"})
]);
songs.add(new Song({ titulo: "Canción 4" }));

var firstSong = songs.at(0);

var songWithIdC1 = songs.get("c1");

songs.remove(firstSong);

答案 1 :(得分:0)

这里有两件事! 修复第一个应该修复第二个。

首先,您说它在返回家之前变成了错误类型2,现在,如果我们看一下代码,我们发现move_towards_point(Obj_Ant_Home.x, Obj_Ant_Home.y, 3);实际上在if BugType = 1 {的范围内。

因此,当虫子进入食物时,它们变成BugType 2,然后您返回家乡的代码将永远不会运行。

第二件事:

您的蚂蚁继续移动的原因可能是因为move_towards_point()实际上更改了对象的内置speed变量,该变量可能永远不会设置回0。因此,一旦BugType变为2时,返回的原始代码将不运行,并且该错误将以它们最后一次运行的速度继续运行。

所有这些说明您可能想要这样的东西:

if (instance_exists(Obj_Food_Small))
{
    BugType = 1;
    move_towards_point(Obj_Food_Small.x, Obj_Food_Small.y, 3)
}
else
{
    BugType = 2;
    move_towards_point(Obj_Ant_Home.x, Obj_Ant_Home.y, 3);
}

但是重要的是不要将返回的原始代码放在仅当错误处于“获取食物”模式下时执行的区域