private int Direction;//角色碰撞物体的方向
private Collider2D collider;//角色碰撞体(获取碰撞体的代码不在这里写出)
public enum directions
{
up,//从上往下碰撞
down,//从下往上
left,//从左往右
right//从右往左
}
public void checkdirection()
{//检测碰撞方向
ContactPoint2D[] contactPoint = new ContactPoint2D [1];//存储碰撞方向的单位向量
collider .GetContacts (contactPoint);//获取碰撞点
//开始判定
if (contactPoint[0].normal.x <0&&contactPoint[0].normal.y ==0.0f)
{
Direction = (int)directions .left;//从左往右
}
else
if (contactPoint[0].normal.x >0 && contactPoint[0].normal.y == 0)
{
Direction = (int)directions .right ;//从右往左
}
else
if (contactPoint[0].normal.y >0 && contactPoint[0].normal.x== 0)
{
Direction = (int)directions .up ;//从上往下
}
else
if (contactPoint[0].normal.y <0 && contactPoint[0].normal.x == 0)
{
Direction = (int)directions .down ;//从下往上
}
}
最后在Update中调用该函数就好了,通过这个判断就可以知道角色是从那个方向触碰到的地面,从左右两侧触碰地面一律视为未接触地面