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

拾取金币时无音效的解决方法及代码修改指引

解决Godot金币拾取无音效问题的调整方案

问题核心原因

当前代码存在两个关键问题导致音效无法正常播放:

  1. 调用queue_free()会立即销毁金币节点,导致$pickcoin还没完成音效播放就被强制销毁
  2. 未通过信号监听确保音效播放完成后再执行销毁逻辑

具体调整步骤

1. 先确认节点配置

  • 在金币Area2D节点下,添加一个AudioStreamPlayer节点,命名为pickcoin
  • 给pickcoin的Stream属性绑定正确的金币拾取音效文件(支持.wav/.ogg等格式)
  • 检查pickcoin的VolumeDb属性,确保未设置为静音状态

2. 修改代码逻辑

通过监听音效播放完成的信号,等音效播放结束后再销毁节点,避免音效被中断。调整后的代码如下:

extends Area2D

func _ready():
    $AnimatedSprite2D.play("default")
    # 连接音效播放完成信号到销毁函数
    $pickcoin.finished.connect(_on_sound_finished)

func _on_body_entered(body):
    if body.name == "Hero":
        $pickcoin.play()
        # 移除原有的立即销毁代码,改为等待音效结束

func _on_sound_finished():
    queue_free()

额外排查项

  • 测试音效文件本身是否可正常播放(在Godot编辑器中点击pickcoin节点的播放按钮验证)
  • 确认Hero节点的碰撞层与金币Area2D的检测层相互匹配,确保触发逻辑能正常执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:54:49