我在互联网上发现其他人对此提出了要求,但我没有找到解决方案。我有一个使用tilemap和复合对撞机的2D游戏。但是,当我添加复合对撞机时,我不能使用ontriggerenter或raycasts来检测地面。因此,我已经完全取消了跳跃的能力,因为无法知道玩家是否在地面上,从而无法在着陆之前再次跳跃。有没有人找到解决方法?
答案 0 :(得分:0)
您的方法应该没有任何问题。没有代码示例,我只能给您一些一般性的提示:
使用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);