用途:为 Godot 中的物理查询提供专家级实现蓝图,涵盖 2D/3D 的射线与形状查询,包括命中检测、体积重叠、鼠标拾取以及高频查询的性能优化。
主要能力:提供多个脚本示例,如 direct_space_state_raycast.gd(高频 intersect_ray,绕过节点开销)、shapecast_ground_detection.gd(体积式落地检测,避免细射线穿透或漏检)、multiple_hit_piercing_ray.gd(穿透弹多段命中)、field_of_view_scanner.gd(FOV 扇形射线 AI 感知)、raycast_reflection_logic.gd(基于碰撞法线的反弹计算)、point_in_shape_query.gd(单点重叠检测,如爆炸中心)、rest_info_3d_stuck_fix.gd(用 get_rest_info 解决卡入)、mouse_pick_3d_query.gd(屏幕坐标转 3D 世界射线拾取)、water_buoyancy_surface_calc.gd(自上而下射线求水面高度)、query_exclusion_optimization.gd(用 RID 排除列表优化性能)。另附查询类型决策表,按需求选择节点 RayCast、intersect_ray、intersect_shape、intersect_point、get_rest_info 等。
使用方式:只按任务加载对应脚本,不要一次加载全部。关键约束:direct_space_state 只能在 _physics_process() 中访问;移动节点后需调用 force_raycast_update();射线需用 query.exclude = [self.get_rid()] 排除自身;优先用 collision_mask/collision_layer 在服务器端过滤,而不是遍历结果;结果不一定返回 CollisionObject 节点(CSG、GridMap、TileMapLayer 可能返回自身);不要用复杂视觉网格做物理查询;细射线可能穿透,小快速目标应使用 cast_motion 或高频步进;上千条射线不宜逐条查询。
适用场景:命中扫描、视线检测、AI 视野、拾取、爆炸、穿透弹、地面检测、水面浮力、卡入修复等。
限制与依赖:需先建立命名物理层与 tick 设置(godot-project-foundations),并依赖 GDScript 类型化查询参数(godot-gdscript-mastery)。计算着色器 GPU 射线不在范围内。官方文档、相关技能与深度参考文件按需打开,不做预加载。具体实现细节以资料所列脚本与官方文档为准,其余未提供。