首页 > 解决方案 > Godot2D我怎样才能让敌人的攻击碰撞工作

问题描述

在此处输入图像描述

我正在制作玩家的死亡系统,但是当敌人与玩家发生碰撞时,什么也没有发生,嗯......它会在日志中打印还剩多少生命,但仅此而已,我创建了区域 2D 组(Hurtbox)和(力量(敌人的区域组)),碰撞形状和其他一切

标签: 2dspritecollisiongodot

解决方案


播放动画和产量:

    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 应该告诉你那个缺失的参数。如果您没有看到有关此的消息,请仔细检查您是否连接了正确的信号。


推荐阅读