游戏制作者重叠的敌人:工作室,我该如何解决这个问题?

时间:2016-12-20 09:28:07

标签: game-maker gml

我为我的游戏制作的敌人的人工智能很简单。他们只是跟随玩家(更确切地说,他们看向玩家的方向并前进)

    Step Event:

    if (instance_exists(obj_player)){
         direction = point_direction(x,y,obj_player.x,obj_player.y);
    }

    speed = spd;

但是他们继续相互重叠并且在玩家之上。我试过研究,但所有的论坛都说是使用place_free()和xprevious& yprevious,但我不知道如何使用它们。我该如何解决?

谢谢:)

1 个答案:

答案 0 :(得分:0)

您可以在游戏制作者文档中了解这一点:https://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/collisions/place_free.html

基本上,你要做的是避免移动你的实例,如果这意味着导致碰撞。 x_previous和y_previous将用于通过返回上一个位置来取消移动。

但我觉得最好在移动之前检查一下这个地方,所以我会在你脚本的末尾添加:

if (place_free(x+hspeed, y+vspeed)) speed = spd;
else speed = 0;
这样,敌人将停止而不是踩到其他实例之上。

稍微升级如下:如果检测到碰撞,请检查是否可以沿着单个轴移动(x或y)并执行此操作。