【Unity2D】射线·碰撞投射·方法总结
射线:Physics2D.Raycast( )必须参数:起点、方向可选参数:距离、Z轴深度、过滤条件(检测哪些层、是否检测触发碰撞器等)out 参数:RaycastHit2D[ ] (存放碰撞返回的结果)返回值:int (表示碰撞结果的个数)/ RaycastHit2D(射线碰撞的结果)备注:如果射线从碰撞体内部发出,可以使用collider2d.Raycast( )方法手册链接:Physics2
一、射线:
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
三、形状投射
Physics2D.BoxCast()
从概念上说,BoxCast 就像朝特定方向拖动一个盒体穿过场景一样。在该过程中,可以检测并报告与盒体接触的任何对象。
与之功能相同的函数还有以下几个,区别是形状不同(胶囊,圆形,线段):
返回值:这些方法返回一个 RaycastHit2D 对象,可通过它获取命中的碰撞器、接触点、法线等信息。
参数:除了用于指定各个形状大小/半径的参数外,origin指定起点, direction用于指定投射的方向。
可选参数:LayerMask 用于有选择地检测某些图层上的对象。 distance用于指定投射的距离,以及minDepth和maxDepth,用于指定在Z轴上的区间限制。
Physics2D.BoxCastAll
与上面的方法用法相似,区别是它返回一个数组,包含所有命中的RaycastHit2D 对象。
其他
除了上面这些,physics2D类还有许多非常实用的投射方法,比如Overlap开头的一系列方法,用于检查某碰撞器是否在某个区域内,或者获取指定区域内所有碰撞器,检查碰撞器是否与某个点重叠,等等。方法繁多,不一一记录啦。如有需要可以浏览官方手册:
碰撞返回的结果 :RaycastHit2D
可以通过返回的 RaycastHit2D变量 获取到碰撞的各种信息
RaycastHit2D hit;
常用的有:
- hit.collider / rigidbody / transform
- 碰撞对象的collider / rigidbody / transform
- hit.distance
- 从原点到发生撞击移动的距离。
- 注意理解这句话的方式(可参考RaycastHit2D.distance_煮粥侠_99的博客-CSDN博客)
- hit.point
- 射线命中碰撞体表面的点(世界空间中)。
- hit.normal
- 射线命中的表面的法线矢量。
相关博文:
【why】Physics2D.Raycast 的可选参数LayerMask使用后检测不到碰撞
【why】2D射线检测屏幕某一点是否有物体,检测不到碰撞(Queries Start In Colliders的坑
更多推荐



所有评论(0)