1.IsTouchingLayers
一般我们在游戏中进行跳跃时,使用IsTouchingLayers函数判断脚下是否是地面层级
if (coll.IsTouchingLayers(groundLayer)){
isOnGround = true;
}
但是这样判断的方式会让我们可以贴墙无限跳跃,为了解决这样的办法,我们可以采取射线的方法,只判断人物脚下两点是否接触到地面。
这里我们使用Physics2D的Raycast方法
origin:射线起始的点
direction:射线发射的方向
distance:射线的距离
layerMask:检测的层级
这个方法会返回一条相对应的射线,通过判断射线是否检测到层级得出是否碰撞到
RaycastHit2D hit = Physics2D.Raycast(pos + offset, dir, dis, layer);
if(hit){
isOnGround = true;
}
同时我们可以使用Debug.DrawRay()在界面中画出射线
如果检测到射线则为红色,如果未检测到则为绿色。
Color color = hit ? Color.red : Color.green;
Debug.DrawRay(pos + offset, dir*dis, color);