用途:uloop-raycast 用于从 Camera.main 发射射线,穿过一个 Game View 坐标,检查该屏幕位置在 3D 物理中命中的物体,适用于点击前或截图分析前确认坐标对应的目标。
用法: uloop raycast --x <x> --y <y> [--layer-mask <mask>] [--max-distance <distance>]
参数:--x 为 Game View 像素的 X 坐标(原点左上),默认 0,可取 AnnotatedElements[].SimX、RaycastGridPoints[].InputX,或经 ScreenshotToInputFormula 换算的原始图像像素;--y 同理,默认 0。--layer-mask 为射线检测使用的物理层掩码,默认 Unity 默认射线层;--max-distance 为世界单位下的最大距离,默认 1000。
坐标系:--x/--y 与 simulate-mouse-input 使用相同的左上原点 Game View 输入坐标。来自 uloop screenshot --capture-mode rendering 的原始图像像素需先用 ScreenshotToInputFormula 转换。AnnotatedElements[].SimX/SimY 与 RaycastGridPoints[].InputX/InputY 可直接传入。调用方不要翻转 Y,工具内部会转换:unity_x = input_x;unity_y = gameViewHeight - input_y。
示例: uloop raycast --x 960 --y 540 uloop raycast --x 960 --y 540 --layer-mask 1
输出:返回 JSON,包含 Success(命令是否完成)、Message(状态信息)、Hit(是否命中物理体);当 Hit 为 true 时还含 HitGameObjectName/HitGameObjectPath、HitLayer/HitLayerName、Distance、HitPointX/Y/Z、HitNormalX/Y/Z。另有坐标转换信息:InputCoordinateSystem、UnityCoordinateSystem、GameViewWidth/Height、InputPositionX/Y、InjectedUnityPositionX/Y、CoordinateConversionFormula。
限制:需要有效的 Camera.main;使用 Unity Physics 射线检测,而非 UI EventSystem 射线检测。其他收费、平台与效果信息暂未提供。