CircleCast命中返回点规则及RaycastHit2D.distance取值咨询
Physics2D.CircleCast 对应 RaycastHit2D 返回值逻辑说明
直接给两个核心问题的明确结论,附验证场景参考:
- 关于命中点
RaycastHit2D.point的归属
该字段返回的是被命中碰撞体表面的精确接触点,不是圆形投射物自身的中心点。
命中瞬间圆形自身的中心点坐标可以直接通过公式计算:castOrigin + castDirection.normalized * hit.distance,不需要额外做几何推导。 - 关于
RaycastHit2D.distance的实际含义
该字段返回的是圆形从投射起点出发,到刚好与碰撞体产生接触时,圆形中心点的实际移动距离,并非碰撞接触点到投射原点的直线距离。
验证场景参考
你可以搭一个极简场景复现验证数值逻辑:
- 设置圆形投射参数:圆心起点为(0,0),半径0.5,投射方向为X轴正方向,最大投射距离10
- 在场景中放置一个静态碰撞体,碰撞面垂直X轴,位于x=3的位置
- 调用CircleCast拿到命中结果后,输出字段值会完全符合以下规律:
hit.point坐标为(3, 0),落点在静态碰撞体的表面- 命中瞬间圆形中心点坐标为(2.5, 0),距离碰撞面刚好差一个圆形半径的长度
hit.distance返回值为2.5,和圆形中心点的移动距离完全一致,比接触点到原点的距离3少了一个圆形半径的长度——这也符合2D物理引擎的投射判定逻辑:当圆形表面刚接触到碰撞体时就会触发命中,不会等圆心移动到碰撞面位置。
特殊情况提示:如果发起CircleCast时,传入的起点位置本身就和其他碰撞体重叠,此时返回的
hit.distance会为0,hit.point会返回重叠区域内的任意点,这类起点穿透的场景需要单独写逻辑容错。
内容的提问来源于stack exchange,提问作者Memorie
相关产品推荐
相关产品推荐

