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
相关产品推荐
相关产品推荐

