塔防问题

时间:2011-04-22 00:42:49

标签: flash actionscript-3 collision-detection collision

我正在创建一个塔防游戏,我想制造一个射击子弹的塔,并且子弹击中的每个敌人都会受损。子弹可能伤害多个单位。我的问题是检测子弹是否击中了敌人。

现在,我有阵列中的敌人。对于其他塔,当敌人在射程内时,塔会发射,当它击中原始目标时,会对目标造成伤害。

对于我想制造的塔,它每次都会射击子弹的最大范围,我需要它来损坏它在通往最终目的地的途中所击中的每个单位。

任何人对如何做到这一点有任何想法?我一直在考虑它并且没有提出任何有用的东西。

4 个答案:

答案 0 :(得分:0)

挑战是确定炮塔的目标位置,或者如何识别线路上的目标是否被攻击?

举一个例子,一个简单的创建线的方法可能是:炮塔瞄准范围内的第一个敌人,画一条从炮塔穿过那个敌人的线,在炮塔范围的长度。在这种情况下,问题归结为确定当前的敌人是否在线的可接受范围内。

如果您的问题是如何绘制线条,或许您可以澄清问题的哪个部分特别是问题。

答案 1 :(得分:0)

执行此操作的最佳方法是在fire事件上创建项目符号对象。子弹需要跟踪几件事情。

  • 速度
  • 行走距离
  • 敌人击中

每帧移动子弹的速度。检查距离是否大于塔的最大范围。如果是,请将其销毁。如果敌人尚未被击中,则仅与敌人创建碰撞事件。

答案 2 :(得分:0)

这个问题很模糊。

一般来说,你想:

制作子弹

每帧更新它的位置

检查它是否已经达到塔的最大距离,如果是这样的话就会杀死子弹

检查子弹是否击中阵列中的敌人

如果敌人被击中引发爆炸或某种视觉提示和/或声音效果,并施加伤害等。

- 只允许它击中敌人一次 - 你可以通过在子弹中跟踪它来做到这一点。 - 即它已经击中了一系列敌人。

您是否了解如何对这些项目进行编码?

答案 3 :(得分:0)

使用hittestpoint方法。

if(enemy.hitTestPoint(bullet.x,buttet.y) {
  dosomething()
}

表示数组:

for (var i:int = 0;i<enemyArray.lenght;i++) 
if(enemyArray[i].hitTestPoint(bullet.x,buttet.y) {
  dosomething()
}