Unity复合对撞机2d-使用onTriggerEnter或Raycast进行碰撞检测



我在互联网上发现其他人要求这样做,但我还没有找到解决方案。我有一个2d游戏使用瓷砖和复合对撞机。但是,当我添加一个复合对撞机时,我不能使用contiggerenter或光线投射来检测地面。因此,我完全取消了跳跃的能力,因为无法知道球员是否在地上,因此在落地前可以再次跳跃。有人找到办法绕过这个吗?

您的方法不应该有任何问题。如果没有代码示例,我只能给你一些通用的指针:

OnTriggerEnter

使用OnTriggerEnter2D(Collider2D col)在2D环境中检测触发器进入。OnTriggerExit2D表示离开,OnTriggerStay2D表示仍在与其他碰撞器碰撞的每一帧。

不要忘记,其中一个对象需要有一个刚体2D(如果你不想使用物理,请在下拉列表中选择"运动学",并选中"使用全运动学接触"。为了改进碰撞检测,请将"碰撞"下拉列表更改为"连续"。

Raycast

使用光线投射时,您需要从不包括自己的命中框的位置开始光线投射,或者确保光线投射忽略自己的层。

// Raycast down ignoring Player layer
int layerMask =~ LayerMask.GetMask("Player");
RaycastHit2D hit = Physics2D.Raycast(transform.position,
Vector2.down,
layerMask: layerMask);

最新更新