0

在太空射击游戏中,我通过单独的 LUA 文件添加敌人。这些敌人有创造射击的计时器。更改场景时,我想删除所有敌人实例,停止他们的计时器并删除所有镜头。

我已经能够通过将单个敌人添加到场景的显示组中来移除它们,但是我不能用计时器或镜头来做到这一点。

我该怎么做呢?

4

2 回答 2

0

我要做的(这就是我在游戏中实际处理此类问题的方式)是创建一个表来跟踪敌人,然后将其设置为拥有计时器和镜头的面向对象的类。

例子:

您可以创建一个“敌人”类(本地 myEnemy),它有一个内部计时器(myEnemy.timerID)和一个内部射击表(myEnemy.shots)。

更好的是,为敌人添加一个“破坏”方法(myEnemy.destroy()),它会停止计时器并破坏射击,然后当你改变场景时,你只需要遍历你的桌子,对每个敌人调用破坏方法,计时器/镜头将自动销毁:)

我不知道您的代码是否已经是面向对象的,但在这种情况下,它使事情变得更容易:) 如果您需要更多信息,请告诉我

干杯

于 2013-10-27T11:00:06.893 回答
0

创建计时器时,只需执行以下操作:

在场景顶部声明计时器以使其成为场景中的全局范围,如下所示:

local timer_1

然后将计时器用作:

timer_1 = timer.performWithDelay(1000,myFunction,-1)

然后你可以停止它:

if(timer_1)then
  timer.cancel(timer_1)
end

继续编码........ :)

于 2013-10-25T18:16:26.877 回答