我为我的游戏制作的敌人的人工智能很简单。他们只是跟随玩家(更确切地说,他们看向玩家的方向并前进)
Step Event:
if (instance_exists(obj_player)){
direction = point_direction(x,y,obj_player.x,obj_player.y);
}
speed = spd;
但是他们继续相互重叠并且在玩家之上。我试过研究,但所有的论坛都说是使用place_free()和xprevious& yprevious,但我不知道如何使用它们。我该如何解决?
谢谢:)
答案 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)并执行此操作。