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

Godot引擎子弹碰撞敌人无检测响应问题求助

Godot子弹与敌人碰撞检测问题解决方案

1. 修复信号类型错误

Area2D之间的碰撞触发的是area_entered信号,而非你代码里用的body_entered(后者用于Area2D和PhysicsBody2D/CharacterBody2D的碰撞)。修改代码如下:

extends Area2D

const SPEED = 300

func _physics_process(delta: float) -> void:
    position.y -= SPEED * delta

func _on_area_entered(area: Area2D) -> void:
    print("destroyed with bullet")
    area.queue_free()
    self.queue_free()

2. 确认信号已正确绑定

  • 选中子弹的Area2D节点,在检查器面板切换到信号标签
  • 找到area_entered信号,点击「连接」,选择子弹节点自身,确认绑定到_on_area_entered函数

3. 额外检查项

  • 确保子弹和敌人的CollisionShape2D都未勾选Disabled,且碰撞形状完全覆盖Sprite/AnimatedSprite的可视范围
  • 确认两者的碰撞层和碰撞掩码匹配:子弹的碰撞掩码要包含敌人所在的碰撞层,反之亦然(至少一方的掩码覆盖对方的层)
  • 排查是否有其他逻辑提前销毁了子弹或敌人节点

内容的提问来源于stack exchange,提问作者Ben van Looij

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 20:54:49