【问题标题】:Ignore collision in specific circumstances while still using it as a trigger在特定情况下忽略碰撞,同时仍将其用作触发器
【发布时间】:2020-04-14 11:58:48
【问题描述】:

我正在制作一款 2D 平台类型的游戏。在这个平台游戏中,既有玩家也有“敌人”。问题出现的原因是:我需要敌人和玩家都与地面相撞,这样他们就不会掉下来。我需要检测玩家何时与敌人发生碰撞,以便记录伤害。我需要玩家能够穿过敌人。脚上有碰撞器不是一种选择,因为玩家可能会与之交互。处理这种特定碰撞检测的最佳方法是什么?

【问题讨论】:

  • 你可以使用LayerMask和布尔值来定义特定的碰撞,或者你可以添加compare tag("YourTag")你能添加更多细节吗?

标签: unity3d 2d collision


【解决方案1】:

您可以使用Layer Collision Matrix (Edit -> ProjectSettings -> Physics2D) 来准确定义哪些layers 可以与哪些其他层发生碰撞。

所以我会简单地在播放器上使用两个碰撞器:

  • 其中一个不是触发器,因此它可以与地面发生碰撞。将它放在与ground 层冲突的层playerGround 上。
  • 另一个触发器,可以与敌人层发生碰撞。命名它,例如playerEnemy 什么的。

由于每个游戏对象只能有一层,因此您的碰撞器必须位于不同的对象上,例如喜欢

player (Rigidbody2D)
|--GroundCollider(layer: playerGround)
|--EnemyCollider(layer:playerEnemy, isTrigger)

enemy 层可以与groundplayerEnemy 发生碰撞。

这样两人都可以在地上行走。玩家可以穿过敌人,但你可以使用OnTriggerEnter 来检测与敌人的碰撞。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多