Unity OnTriggerEnter2D 有时不起作用

Posted

技术标签:

【中文标题】Unity OnTriggerEnter2D 有时不起作用【英文标题】:Unity OnTriggerEnter2D sometimes doesn't work 【发布时间】:2014-12-14 11:16:37 【问题描述】:

我在 Unity 中的 2D 游戏中遇到触发器问题。我想让敌人在他用玩家的武器触发时死亡。问题是有两个对撞机附在敌人身上(标记为“敌人”):

一个是box2d collider,用作普通对撞机 第二个是球体碰撞器,设置为触发器,在脚本中用于检查范围内是否有玩家

我得到了剑对象,它有精灵渲染器、盒子碰撞器(设置为触发器)和脚本:

void OnTriggerEnter2D(Collider2D other)
    
        if(other.tag == "Enemy")
        
            if(!other.isTrigger)
            
                Debug.Log ("enemy");
                Destroy (other.gameObject);
            
        
    

场景截图: http://i.stack.imgur.com/eVtRX.jpg

敌人游戏对象的屏幕截图: http://i.stack.imgur.com/9R5a6.jpg

所以一般来说它有时有效,但有时无效。当我对敌人禁用球体对撞机时,一切正常,但我需要它来检查范围内是否有玩家。我该如何解决?

【问题讨论】:

你在用transform移动武器吗? Transform 立即移动 GameObject 并且不影响碰撞。 我使用动画移动它(我旋转玩家的手)。我认为这与移动无关,而是与敌人相连的两个对撞机。 【参考方案1】:

你应该确保 OnEnterCollider2D 中有两件事

1) 确保参与 OnEnterCollider2D 的两个游戏对象都不能被破坏。如果一个必须被销毁,那么它应该在一段时间后被销毁。

2) 确保参与碰撞的游戏对象之一必须具有未选中 isKinematic 附加的刚体。

【讨论】:

以上是关于Unity OnTriggerEnter2D 有时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Unity OnTriggerEnter2D

Unity OnTriggerEnter2D 未注册

unity OnTriggerEnter2D 不能重复使用

Unity OnTriggerEnter2D CompareTag ||比较标签不一致

碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)

Unity OnTriggerEnter2d() 不工作 |尝试在场景之间切换