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

Unity中Physics2D.Raycast传out类型RaycastHit2D参数报错如何解决?

问题原因
  • 你混淆了Unity 3D和2D的射线检测API签名:3D版本Physics.Raycast确实存在带out RaycastHit参数的重载,但是2D版本的Physics2D.Raycast返回值本身就是RaycastHit2D结构体,不需要通过out参数输出碰撞结果。
  • 你代码里的参数顺序也存在错误:Physics2D.Raycast的第三个参数是检测距离,本身就不是用来接收碰撞结果的参数,自然会报不支持out关键字的错误。
修复方案

直接将方法返回值赋值给你的hit变量,再判断是否命中即可,参考修改后的代码:

Vector3 dir = DirFromAngle(globalAngle);
RaycastHit2D hit;

// 第三个参数填检测距离,需要限制检测范围就替换成你需要的数值
hit = Physics2D.Raycast(transform.position, dir, float.MaxValue, obstacleMask);
// 判断collider不为空即代表命中了符合层级的物体
if (hit.collider != null)
{
    // 后续碰撞处理逻辑
}

内容的提问来源于stack exchange,提问作者LesmoTV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:05