c# - Unity collider OnTriggerEnter 没有被调用
问题描述
我之前制作了许多对撞机,我使用的是 (collider other OnTriggerEnter(collider other)
),然后通过比较TAG检查另一个对撞机是否是我想要的。但是这次我没有触发 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");
并且它被触发。
我无法弄清楚出了什么问题。请帮我。
解决方案
首先仔细检查你的敌人游戏对象是否有标签“敌人”。接下来确保您的玩家对撞机在 Unity 检查器中选择了“Is Trigger”选项。
接下来尝试
在 if 语句中使用col.gameObject.CompareTag("Enemy")
而不是: 。col.tag == "Enemy"
在 Colliders 上查看 Unity 文档: Unity Collider 文档 Unity Component.CompareTag method with example
希望这可以帮助!
推荐阅读
- identity - 不依赖于 EDID 的唯一显示器 ID
- amazon-web-services - 当我在调用中包含授权标头时,为什么我会收到来自 AWS Lambda/Api 网关的 502:错误网关?
- php - 带有 100kb JSON blob 的非常慢的 apache 请求
- php - 如何修复 WooCommerce 中的 PayPal IPN 验证错误?
- c# - 在 DynamoDB AWS C# .net core 中应用查询
- javascript - 用间隔反应更新状态
- wordpress - Wordpress API - 访问页面字段
- c++ - 自动转换为无效未使用的变量 C++
- android - 将 CSV 文件从 Android 设备传输到 PC
- android - 当我更新 ListView 上的列表时,Flutter 页面不会重新加载