【发布时间】:2016-07-19 07:39:05
【问题描述】:
大家好,我正在 Game Maker 中开发一款 RTS 游戏,我需要一些帮助来创建跟踪导弹。
这个想法是创建一个实时跟踪对象单元的给定实例的对象。简而言之,创建一个跟随敌方单位的射弹。就像一个寻的导弹。
目前,每当我创建一个 obj_projectile 时,我都会在弹丸本身“trackId”中设置一个变量,其中包含我正在跟踪的 unit.id。这样:
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;
移动速度和加速度是 obj_projectile 的变量。
如果这样做,我首先尝试对目标单元的引用进行故障保护:
if object_exists((trackId)){
lastKnownX = (trackId).x;
lastKnownY = (trackId).y;
}
但它也不起作用。
问题是,我得到的结果是,炮弹被制造出来,然后飞到目标所在的那一刻,然后静止不动。不跟踪目标。
我真的不知道我做错了什么,我尝试了很多方法来做到这一点。谷歌这次没有被证明是有用的。不是说谷歌没有答案,只是我找不到:(
我这样做的方式非常错误?我错过了什么明显的事情吗?我不完全熟悉通过 ID 引用对象,所以可能就是这样。
感谢阅读。
【问题讨论】:
标签: tracking game-maker projectile