一、射线:
Physics2D.Raycast( )
- 必须参数:起点、方向
- 可选参数:距离、Z轴深度、过滤条件(检测哪些层、是否检测触发碰撞器等)
- out 参数:RaycastHit2D[ ] (存放碰撞返回的结果)
- 返回值:int (表示碰撞结果的个数)/ RaycastHit2D(射线碰撞的结果)
备注:如果射线从碰撞体内部发出,可以使用collider2d.Raycast( )方法
手册链接:Physics2D-Raycast - Unity 脚本 API
二、与碰撞体相关的射线/投射:
1.【射线】
Collider2D.Raycast()
将光线投射到从碰撞体位置开始的场景中,并忽略碰撞体本身。
- 必须参数:方向
- 可选参数:距离、层、Z轴深度、过滤条件(检测哪些层、是否检测触发碰撞器等)
- out 参数:RaycastHit2D[ ] (存放碰撞返回的结果)
- 返回值:int (表示碰撞结果的个数)
手册链接:Collider2D-Raycast - Unity 脚本 API
2.【碰撞体投射】
collider2D.cast()
将碰撞体形状投射到从该碰撞体位置开始的场景中,而忽略该碰撞体本身。
- 必须参数:方向
- 可选参数:距离、层、Z轴深度、过滤条件(检测哪些层、是否检测触发碰撞器等)
- out 参数:RaycastHit2D[ ] (存放碰撞返回的结果)
- 返回值:int (表示碰撞结果的个数)
Collider2D-Cast - Unity 脚本 API
rigidbody2D.Cast()
附加到 Rigidbody2D 的所有 Collider2D 形状都将投射到场景中 - 从每个碰撞体的位置开始,忽略附加到同一个 Rigidbody2D 的碰撞体
- 必须参数:方向
- 可选参数:距离、层、Z轴深度、过滤条件(检测哪些层、是否检测触发碰撞器等)
- out 参数:RaycastHit2D[ ] (存放碰撞返回的结果)
- 返回值:int (表示碰撞结果的个数)
Rigidbody2D-Cast - Unity 脚本 API
碰撞返回的结果 :RaycastHit2D
可以通过返回的 RaycastHit2D变量 获取到碰撞的各种信息
RaycastHit2D hit;
常用的有:
- hit.collider / rigidbody / transform
- 碰撞对象的collider / rigidbody / transform
- hit.distance
- 从原点到发生撞击移动的距离。
- 注意理解这句话的方式(可参考RaycastHit2D.distance_煮粥侠_99的博客-CSDN博客)
- hit.point
- hit.normal
相关博文:
Unity 2D射线基本使用和画线
【why】Physics2D.Raycast 的可选参数LayerMask使用后检测不到碰撞
【why】2D射线检测屏幕某一点是否有物体,检测不到碰撞(Queries Start In Colliders的坑