如何在Unity 2D中检查播放器是否在墙上?

时间:2018-06-26 20:16:55

标签: unity3d 2d

我制作了一个简单的2D游戏,玩家必须跳起来。我使用Tilemaps创建地图。要让运动员跳起来,他必须触地。 示例:

void OnCollisionEnter2D(Collision2D other)
{
    if(other.transform.tag == "Ground")
    {
        IsGrounded = true;
    }

}

现在是一个小问题:如果玩家甚至从底部,对撞机的左侧或右侧触摸,isGround就会变为真,并且玩家可以从墙壁上跳下来。如何禁用此功能?

1 个答案:

答案 0 :(得分:0)

有很多方法可以完成此任务。我要做的方法是挖掘Collision2D对象。从中可以使用other.contacts获得一个ContactPoint2D数组,它可以告诉您所碰撞的表面的方向。

类似的东西:

void OnCollisionEnter2D(Collision2D other)
{
    if(other.transform.tag == "Ground" && other.contacts[0].normal == Vector2.up)
    {
        IsGrounded = true;
    }

}

other.contacts[0].normal == Vector2.up正在检查第一次接触的“正常”方向,并将其与世界“向上”矢量进行比较。