RaycastHit2D检测之指定层级

RaycastHit2D是Unity中的一个结构体,用于存储对2D场景中的物体进行射线投射后的结果。射线投射是一种用于检测物体之间交互的技术,通过从一个点向某个方向发出一条射线,然后检测射线是否与场景中的物体相交,如果相交就返回相交点的信息。

RaycastHit2D结构体包含以下属性:

  • collider:返回与射线相交的物体的碰撞器。
  • transform:返回与射线相交的物体的变换组件。
  • point:返回与射线相交的点的坐标。
  • normal:返回与射线相交的点的法线方向。
  • distance:返回射线起点到相交点的距离。

射线检测之指定层级

定义一个射线,从当前物体发射,向下,长度1,只检测层级为8的。

这里的raycastHit2D返回一个0或者非零的值,可用于设置bool变量用于判断是否检测到物体。

//向下进行检测(开始位置,方向,长度,层级)
RaycastHit2D raycastHit2d = Physics2D.Raycast(startDetection.position, Vector2.down, 1, 1 << 8);
//画出射的位置,采用DrawLine方法(开始位置,结束位置,颜色,长度)
Debug.DrawLine(startDetection.position, startDetection.position + Vector3.down, Color.red, 1f);


//向前进行检测
RaycastHit2D raycastHit2dForward = Physics2D.Raycast(startDetection.position,(spriteRenderer.flipX?Vector2.left:Vector2.right),0.5f, 1 << 8);

Debug.DrawLine(startDetection.position, startDetection.position + (spriteRenderer.flipX ? Vector3.left : Vector3.right), Color.red, 0.5f);

以下是关于raycastHit的所有重载方法

public static int Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results, [Internal.DefaultValue("Mathf.Infinity")] float distance);
        public static int Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, List<RaycastHit2D> results, [Internal.DefaultValue("Mathf.Infinity")] float distance = float.PositiveInfinity);
        [ExcludeFromDocs]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction);
        [ExcludeFromDocs]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance);
        [ExcludeFromDocs]
        public static int Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results);
        [ExcludeFromDocs]
        [RequiredByNativeCode]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask);
        //
        // 摘要:
        //     Casts a ray against colliders in the Scene.
        //
        // 参数:
        //   origin:
        //     The point in 2D space where the ray originates.
        //
        //   direction:
        //     A vector representing the direction of the ray.
        //
        //   distance:
        //     The maximum distance over which to cast the ray.
        //
        //   layerMask:
        //     Filter to detect Colliders only on certain layers.
        //
        //   minDepth:
        //     Only include objects with a Z coordinate (depth) greater than or equal to this
        //     value.
        //
        //   maxDepth:
        //     Only include objects with a Z coordinate (depth) less than or equal to this value.
        //
        // 返回结果:
        //     The cast results returned.
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, [Internal.DefaultValue("Mathf.Infinity")] float distance, [Internal.DefaultValue("DefaultRaycastLayers")] int layerMask, [Internal.DefaultValue("-Mathf.Infinity")] float minDepth, [Internal.DefaultValue("Mathf.Infinity")] float maxDepth);
        [ExcludeFromDocs]
        public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance, int layerMask, float minDepth);

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值