【问题标题】:How to check if player is on the wall in Unity 2D?如何在 Unity 2D 中检查玩家是否在墙上?
【发布时间】:2019-04-07 15:32:52
【问题描述】:

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

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

}

现在有一个小问题:如果玩家从底部、左侧或右侧触摸碰撞器,那么 isGround 变为 true,玩家可以从墙上跳下。如何禁用此功能?

【问题讨论】:

  • 在角色脚下制作另一个较小的碰撞器,并将接地逻辑放置在那里。
  • 通常情况下,事情是通过光线投射进行管理的。我建议在资产商店下载由标准资产制作的 2d 播放器控制器,并从中学习。

标签: unity3d 2d


【解决方案1】:

有很多方法可以做到这一点。我这样做的方法是深入研究 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 正在检查第一个接触的“正常”方向,并将其与世界“向上”向量进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多