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

时间:2018-12-03 13:44:15

标签: unity3d

我在互联网上发现其他人对此提出了要求,但我没有找到解决方案。我有一个使用tilemap和复合对撞机的2D游戏。但是,当我添加复合对撞机时,我不能使用ontriggerenter或raycasts来检测地面。因此,我已经完全取消了跳跃的能力,因为无法知道玩家是否在地面上,从而无法在着陆之前再次跳跃。有没有人找到解决方法?

1 个答案:

答案 0 :(得分:0)

您的方法应该没有任何问题。没有代码示例,我只能给您一些一般性的提示:

OnTriggerEnter

使用OnTriggerEnter2D(Collider2D col)检测2D环境中的触发器输入。 OnTriggerExit2D用于离开,OnTriggerStay2D用于您仍与其他对撞机碰撞的每一帧。

别忘了其中一个对象需要具有Rigidbody2D(如果您不想使用物理学,请在下拉列表中选择“运动学”,然后选中“使用完整运动学接触”。要改善碰撞检测,将“碰撞”下拉列表更改为“连续”。

射线广播

使用Raycasts时,您需要从不包含自己的点击框的位置开始光线投射,或确保光线投射忽略其自己的图层。

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