2d - Godot2D我怎样才能让敌人的攻击碰撞工作
问题描述
我正在制作玩家的死亡系统,但是当敌人与玩家发生碰撞时,什么也没有发生,嗯......它会在日志中打印还剩多少生命,但仅此而已,我创建了区域 2D 组(Hurtbox)和(力量(敌人的区域组)),碰撞形状和其他一切
解决方案
播放动画和产量:
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 应该告诉你那个缺失的参数。如果您没有看到有关此的消息,请仔细检查您是否连接了正确的信号。
推荐阅读
- linux - perl 如何从 linux 获取退出代码
- azure - Azure - 在 Java Spring Boot 中使用用户管理标识访问 Key Vault:错误详细信息:ManagedIdentityCredential 身份验证不可用?
- clang - clang-8:从 AST 中的 DeclRefExpr 节点获取 typedef 信息
- magento2 - how to apply a custom css class on a magento 2 customer forget password page
- python - 以有效的方式从 3d numpy 中选择多个值
- r - 如何在R中逐年删除具有顶部和底部1%值的观察值
- mysql - 如何在 Slick 中使用 LIKE 运算符?
- c - 我应该如何理解这些 C 语法?
- azure - Azure 数据工厂同时插入/更新两个表
- qt - 如果我调用 Qt 小部件的 setValue() 或类似函数,它的 valueChanged() 插槽何时保证执行?