微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。