Godot2D 如何让敌人的攻击碰撞起作用

问题描述

enter image description here

我正在制作一个玩家的死亡系统,但是当敌人与玩家发生碰撞时,什么也没有发生,好吧……它会在日志中打印出还剩下多少生命,但仅此而已,我创建了区域 2D 组(HurtBox ) 和 (power(敌人的区域组)),colissionshape 和其他一切

解决方法

播放动画和产量:

    if life == 0:
        $Spritezada.play("Dead");
        yield($Spritezada,"animation_finished");
        print("died");
        queue_free();

上面的代码将播放动画,然后停止执行。当动画播放器发出信号 animation_finished 时,它将恢复,打印 "died" 并设置当前节点以进行移除 (queue_free)。


顺便说一下,animation_finished 信号传递了一个文本参数。如果您不想按照上述建议使用 yield,请按如下方式编写代码:

func _on_Spritezada_animation_finished(anim_name: String):
    if anim_name == "Dead":
        queue_free();

我相信 Godot 应该告诉您有关缺少的参数的信息。如果您没有看到相关消息,请仔细检查您是否连接了正确的信号。