游戏制作者 - 无法创建跟踪投射物

时间:2016-07-18 22:53:43

标签: tracking game-maker projectile

嘿伙计们我正在Game Maker中开发RTS游戏,我需要一些创建跟踪导弹的帮助。

这个想法是创建一个实时跟踪对象单元的给定实例的对象。简单来说,创建一个跟随敌方单位的射弹。就像一个寻的导弹。

此刻,每当我创建一个obj_projectile时,我都会使用unit.id在射弹本身“trackId”中设置一个变量。我正在追踪。这样:

projectile.trackId = foe.id;

成为敌人的敌人我正在射击。

然后,在射弹的步骤中:

//If unit does not exists keep going to the same point
if object_exists(trackId){
    lastKnownX = trackId.x;
    lastKnownY = trackId.y;
}

direction = point_direction(x, y, lastKnownX, lastKnownY);
image_angle = point_direction(x, y, lastKnownX, lastKnownY);
motion_add(point_direction(x, y, lastKnownX, lastKnownY), acceleration);

//Don`t go topspeed
if (speed > movespeed) speed = movespeed;

movepeed和acceleration是obj_projectile的变量。

如果通过这样做,我试图在第一个中对目标单元的引用进行故障保护:

if object_exists((trackId)){
    lastKnownX = (trackId).x;
    lastKnownY = (trackId).y;
}

但它也不起作用。

事实上,我所拥有的结果是射弹正在被创造,然后在那个时刻进入目标点,然后保持无动作。不跟踪目标。

我真的不知道我做错了什么,我尝试了很多方法。谷歌这次没有证明有用。并不是说谷歌没有答案,但我只是找不到它:(

我是以非常错误的方式做到这一点的?我错过了一件明显的事吗?我完全不熟悉它的ID来引用对象,所以可能就是这样。

感谢阅读。

1 个答案:

答案 0 :(得分:1)

问题在另一个网站上得到了解答,仅仅是为了记录,我使用了object_exists错误,我需要使用instance_exists。

在射弹的步骤中:

if instance_exists(trackId){ 

而不是

if object_exists(trackId){