Skip to content

计时器和时间

时间管理在游戏中非常重要。GDevelop 提供了几种不同的工具:

  • 使用事件内的动作来运行计时器。然后可以使用条件来检查是否已经过足够的时间以便运行其他动作或重置计时器。计时器可以附加到场景或对象。
  • 特殊动作如“等待 X 秒”可以用于在运行事件的下一个动作之前等待一段时间。这对于创建过场动画、时间轴或发生不会立即发生的效果非常有用。
  • 最后,有一些表达式可以获取当前时间、日期和自游戏开始以来经过的时间。

“等待 X 秒”动作

“等待 X 秒”动作会在指定的时间之后运行下一个动作和子事件(如果有)。例如:

查看这个等待动作以及如何正确使用它的信息

场景计时器

您可以使用动作来开始场景计时器。然后,可以使用条件来检查它们经过的时间,以在计时器达到某个值时运行动作。

注意

您可以为计时器取任何名称。计时器名称是文本/字符串表达式,因此必须用引号括起来!

基本示例

在这个示例中,一个计时器在场景开始时启动,当计时器达到 3 秒时将创建一个对象:

重要提示

不要忘记使用启动(或重置)计时器的动作。否则,计时器将不会启动,并且条件将永远不会被验证。

初学者示例

您可以使用重置计时器动作使某些事物以固定时间间隔重复。在这里,我们采取与以前相同的示例,但还重置计时器为 0 当它达到 3 秒时。这允许每 3 秒创建一个新的“烟花”对象:

高级场景计时器示例

这是一个更高级的计时器示例。计时器被用来暂时保护玩家免受伤害。为玩家提供的保护时间取决于变量“player_undestroyable_time”的值:

对象计时器

除了场景计时器,您还可以在对象的实例上使用计时器。每个场景中的实例都在内存中保存自己的计时器。这些计时器相互独立地工作。

这对于让每个实例(例如,每个飞船、每个敌人、每个玩家...)处理自己的时间非常有用。例如,这可以是玩家或敌人被击中后的无敌时间。

注意

不要忘记使用这些对象上的动作启动某些对象的计时器。否则,计时器将不会运行,任何检查它们的条件将永远不会被验证。

这个动作会在每个 Sprite 对象实例上创建一个名为“color”的计时器,并开始这些计时器。

知识点

请注意,与场景计时器一样,对象计时器名称是字符串表达式。它们必须使用引号括起来。

现在您可以检查计时器:

该条件检查“color”计时器中经过的时间是否大于变量“ColorChangeTime”的值。条件将选取每个 Sprite 实例,其计时器值大于它们使用对象变量“ColorChangeTime”请求的时间。然后,Sprite 颜色更改为随机颜色,并重置对象计时器。

利用对象变量检查对象计时器非常有用。例如,您可以让几个敌人实例以不同的射击速率发射子弹。当敌人与“射速提升”碰撞时,对象计时器的另一个用途是可见的。您可以将变量“FireRateTime”设置为小于正常值的值,这意味着每颗子弹之间的时间将减少。

高级概念:使用变量模拟计时器

场景和对象计时器很方便。但是,有时您可能希望使用变量模拟计时器。这样可以更好地控制时间:使用变量,您可以通过向变量添加或减去时间来增加或减少时间的值。

为此,请使用动作使用 TimeDelta() 表达式增加变量的值:

参考

所有的动作、条件和表达式都列在计时器参考页面中。