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

问题描述 投票:0回答:1

我做了一个简单的2D游戏,玩家必须跳起来。我用Tilemaps创建了一个地图。对于一个跳跃的球员,他必须触地。例:

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

}

现在一个小问题:如果玩家甚至从底部,碰撞器的左侧或右侧接触,那么isGround变为真,玩家可以从墙上跳下。我怎么能禁用它?

unity3d 2d
1个回答
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正在检查第一次接触的“正常”方向,并将其与世界“向上”向量进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.