ActionScript 2:导航导弹

时间:2013-10-24 02:18:09

标签: actionscript-2 2d-games

我到处搜索并找到了一些编码寻的导弹的资源,但是我对动作脚本和编码很新,我不能真正理解不同的部分做什么,更不用说将它们合并到我的游戏中了

我正在为学校项目制作滚动射击游戏。有一种特殊的“三级”武器,其工作原理如下:

  • 当敌人在范围内时武器自动开火
  • 武器瞄准最近的敌人并向它靠近
  • 它也是导弹,所以它也需要旋转运动
  • 当目标被摧毁时,导弹将自毁

我已经找到了找到最近目标的代码:

for (var i in enemies)
        {
            var min = Infinity; // Set to infinity so the if statement will work

            var tempDist = getDistance(enemies[i]); // tempDist stores the distance

            if (tempDist < min && tempDist < 300)
            {
                min = tempDist;
                closestEnemy = enemies[i];
            }
        }

(getDistance()是一个用于查找代码中两个MC之间距离的函数)

我想要它做的是,如果没有附近的目标,则nearestEnemy存储标识符或“undefined”。寻的导弹MC有一类应该通过_root.playership.closestEnemy不断更新最近敌人的位置。如果它是“未定义的”,它应该爆炸。

玩家的宇宙飞船包含一个名为“敌人”的阵列,其中包含所有衍生出来的敌人的所有身份。我有重新加载和发射率系统,这只是跟踪问题。

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

您需要就如何运行“跟踪”做出一些决定,即:

  • 它是否完美(导弹是否直接指向目标,还是需要时间转向?)
  • 导弹是否有速度限制,加速度或恒定速度?

最简单的方法是将导弹的角度调整为它与目标之间的矢量角度:angle = atan2(target.y-missile.y, target.x-missile.x。 (请原谅我,如果我的AS2语法不正确,那已经有一段时间了。)

下一步是推进导弹的位置。如果你已经从上面得到了角度,你只需要使用一些三角法来分离正交分量:

missile.x += missile.speed * cos(angle);
missile.y += missile.speed * sin(angle);

您正在使用导弹和目标之间矢量的x,y分量,以每帧的恒定速度(missile.speed)移动。从那里你可以开始添加加速度(线性和角速度等)。

希望这很有帮助。