【问题标题】:Game Maker - Can't create tracking projectilesGame Maker - 无法创建跟踪射弹
【发布时间】: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


    【解决方案1】:

    问题在另一个站点得到了回答,为了记录,我使用object_exists错误,我需要使用instance_exists。

    在弹丸的 step 事件中:

    if instance_exists(trackId){ 
    

    而不是

    if object_exists(trackId){
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-08
      • 2016-10-13
      • 2020-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多