【Unity2D】射线·碰撞投射·方法总结

一、射线:

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的坑
 

你可能感兴趣的:(Unity,unity,游戏引擎)