You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GDScript中实现敌人生成后变速、暂停再移动

实现敌人生成后定时变速/停止再恢复的逻辑

要实现敌人生成后延迟改变速度、停止再恢复的效果,核心是把固定的速度常量改成可动态修改的变量,配合Godot的延迟机制来控制状态切换,以下是修改后的实现:

核心思路

  • 将原有的const speed替换为可变变量,方便随时调整速度值
  • 使用async/await实现无节点的延迟逻辑,或者添加Timer节点来控制时序(前者更轻量化)
  • 按需求设置多个阶段的等待时间和对应速度

修改后的代码

extends CharacterBody3D

var current_speed = -1  # 动态控制的当前速度
const BASE_SPEED = -1   # 保存基础速度,用于后续恢复

func _ready():
    # 启动状态切换的异步流程,不阻塞物理帧更新
    await speed_control_cycle()

func _physics_process(delta):
    position += transform.basis * Vector3(current_speed, 0, 0) * delta * 0.01

async func speed_control_cycle():
    # 阶段1:生成后以基础速度移动3秒
    await get_tree().create_timer(3.0).timeout
    # 阶段2:停止移动(也可改为其他速度,比如current_speed = -0.5)
    current_speed = 0
    # 阶段3:停止2秒后恢复基础速度
    await get_tree().create_timer(2.0).timeout
    current_speed = BASE_SPEED
    # 如果需要循环重复这个变速流程,取消下面的注释即可
    # await speed_control_cycle()

额外说明

  • async/await是Godot 3.1及以上版本支持的特性,无需额外添加Timer节点,代码更简洁
  • 如果需要更复杂的时序控制(比如支持中途打断、多段变速),可以添加Timer节点,通过连接timeout信号来处理速度变化
  • 调整create_timer()中的数值可修改各阶段的等待时长,修改current_speed的赋值可设置任意目标速度

内容的提问来源于stack exchange,提问作者happy ghast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 18:52:12