[Unity][射线检测][2D]检测并忽略多个平行于水平面的2D碰撞体平台

本文介绍了如何在Unity中使用2D射线检测实现玩家角色只在运动或静止时与地面碰撞,而忽略平台的碰撞效果。通过在玩家位置发射不同方向的2D射线,对地面以外的碰撞体进行忽略处理。关键点包括使用EdgeCollider2D或Polygon Collider 2D作为平台碰撞体,通过Physics2D.Raycast系列方法进行检测,并结合PlatformEffector2D组件避免不必要的碰撞。
摘要由CSDN通过智能技术生成

 

要实现的是 玩家 遇到平台,不会 被 平台的碰撞体 阻拦,而是当 玩家 除了 站立 静止、运动 的状态 才会站立在地面上。

要 实现 这个 功能,就得 在 玩家 的位置 坐标 发射 几个方向的 2D射线检测,除了 黑色 地面的 碰撞体 不进行 忽略,其他的 类似平台 的碰撞体 全部进行忽略。

 

(玩家)绿色长方形 碰撞体BoxCollider2D。

(地面)黑色 线性碰撞体 EdgeCollider2D。

(平台)红色 线性碰撞体 EdgeCollider2D 或者是 多边形线性碰撞体Polygon Collider 2D。

除了 2D射线检测  Physics2D.Raycast 参考资料4以外,2D盒型射线检测 参考资料3,2D 圆形射线检测 参考资料2

都可以检测 单一 某特定层级 碰撞体 的物体。

 

Physics2D.RaycastAll 获得一个 碰撞体数组,里面包含了 所有 除了 2D射线检测到以外 的所有的 碰撞体。

如果用Physics2D.RaycastAll 在玩家的位置,向下 进行射线检测,检测地面碰撞体,那么就会 获得 一个 2D碰撞体 数组,里面包含了所有除了 地面 以外所有该 场景 的碰撞体。

 

对平台的2D碰撞体 例如:BoxCollider2D的UsedBy Effector勾选,并且这个实体添加组件PlatformEffector2D。仅碰撞从上面向下的碰撞体。

 

 

 

参考资

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值