Vector2 pointA = groundCheck.position;
Vector2 pointB = groundCheck.position+new Vector3(0,-0.1f,0);
bool banded = Physics2D.Linecast (pointA, pointB, 1<<LayerMask.NameToLayer("Band"));
bool ignore=!banded;
Physics2D.IgnoreLayerCollision(LayerMask.NameToLayer("Player"),LayerMask.NameToLayer("Band"),ignore);
做法则是通过Physics2D.IgnoreLayerCollision设置角色和Band层何时碰撞检测,如果角色在该台阶正上方一定范围内,则开启检测,在台阶下方则关闭两层之前的物理检测效果。不过发现还有点小问题就是,如果两个台阶隔得较近会使判断出现问题,所以可能要从地图编辑上规避他们。