【问题标题】:Unity collider OnTriggerEnter not getting calledUnity collider OnTriggerEnter 没有被调用
【发布时间】:2018-06-05 12:46:13
【问题描述】:

我之前制作了很多colliders,我使用的是(collider otherOnTriggerEnter(collider other)),然后通过比较TAG来检查另一个colliders是否是我想要的>。但这次我没有触发 canMelee 布尔值。我的代码:

ArrayList Enemy;
public StatData stat;

[SerializeField]
private bool canMelee = false;

/// <summary>
/// OnTriggerEnter is called when the Collider other enters the trigger.
/// </summary>
/// <param name="other">The other Collider involved in this collision.</param>
void OnTriggerEnter(Collider col)
{
    if (col.tag == "Enemy")
    {
        Debug.Log("Now you can do melee attack!");
        canMelee = true;
    }
}

所以我写了这段代码,但不知何故这不起作用我检查了标签并将其添加到玩家游戏对象中,但它仍然不起作用。

我尝试添加另一个调试以检查 OnTriggerEnter() 是否发生在 if 分支上方:Debug.Log("Triggered"); 并被触发。

我不知道出了什么问题。请帮帮我。

【问题讨论】:

  • 您是否尝试过调试并在 if 块上放置断点?然后,您可以通过检查来检查“col”的标签是什么。我怀疑您可能已经设置了父游戏对象标签或类似的东西。您能否发布选择对象的屏幕截图?
  • 不能告诉你出了什么问题,有几件事会导致这个问题(还有其他几个喜欢它)。我们需要知道您的 GameObjects 组件。包括 2 个 GameObjects Inspector 的屏幕截图。包括他们的图层和标签。
  • 你也试过打印出col.tag而不是"Triggered"

标签: c# unity3d game-development


【解决方案1】:

首先仔细检查你的敌人游戏对象是否有标签“敌人”。接下来确保您的玩家对撞机在 Unity 检查器中选择了“Is Trigger”选项。

接下来尝试使用 col.gameObject.CompareTag("Enemy") 而不是:col.tag == "Enemy" 在您的 if 语句中。

查看 Unity 文档以及 Colliders: Unity Collider documentation Unity Component.CompareTag method with example

希望这会有所帮助!

【讨论】:

  • 播放器对象不一定是触发器。只需将其中一个对象标记为触发器,即可在两个对象上调用“OnTriggerEnter”。
  • 我刚刚发现它检测到除了敌人之外的所有东西的碰撞 void OnTriggerEnter(Collider EnemyCol) { Debug.Log("ENTERED!"); if (EnemyCol.CompareTag("Enemy")) { canMelee = true; } } 那么可能出了什么问题?
  • 正如 Eddge 所说,如果不查看检查器中的 GameObjects,很难判断到底是哪里出了问题。可能导致问题的对象之一或其他仅在检查器中可见的对象中可能缺少组件。
  • 谢谢狄龙,我忘了在敌人身上放一个对撞机。
【解决方案2】:

我能给你的第一个建议是,在编写代码Debug 时,始终确保代码中的每一步都在执行。在每个 if 中只调试它应该检查的内容,如果它是真的,在你的 void 内,确保它运行 void,等等......

下一步: - 检查您是否将您的对象标记为“敌人”,这可能是最常见的错误之一,而且它很容易解决,您可能写错了,或者只是没有设置它。 -这里是触发文档documentation。 - 在此之后,确保您的 gameobjecttriggered 的市场。

-如果你愿意,你也可以使用colliders,这也告诉你如何检查标签。

确保您设置了所有这些,如果这对您没有帮助,请在下面发表评论,并附上与此相关的打印、您的游戏对象、代码等。

【讨论】:

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