首页 > 解决方案 > 为什么我的 OnTriggerEnter2D 事件仅在不应该触发的情况下在 android 上触发?

问题描述

相关的reddit线程

我一直在努力解决仅在我在 Android 设备上安装游戏时才会发生的碰撞错误。

我有一个非常简单的游戏,比如空气曲棍球。一些对象代表桨、一个冰球、几个用于得分的端区和墙壁。每当我移动其中一个桨并以非常低的速度与冰球碰撞时,我的 ontriggerenter2d 事件会在我的末端区域触发,即使冰球远不及末端区域。这是我的端区控制器脚本中的 OnTriggerEnter2d 函数:

// EndZone
void OnTriggerEnter2D(Collider2D Other)
{

Debug.Log("EndZone::OnTriggerEnter2D " + playerNumber.ToString());
    if (Other.gameObject.tag == "Puck")
    {
        Observer.SendMessage("Score", "" + playerNumber.ToString());
    }
}

我不确定还有哪些其他信息可能是相关的。如果认为有必要,我将提供包括我的整个项目在内的任何要求。

此错误仅在我实际构建到 android 时发生,而不是在我在桌面上运行游戏时发生。即使我使用平板电脑和统一遥控器来提供输入。

更新:我刚刚发现的更多信息:

我的 PaddleController 中的代码连接到我的桨:

void OnCollisionEnter2D(Collision2D coll)
{
    Debug.Log("PaddleController::OnCollisionEnter2D " + coll.gameObject.tag);
    if (coll.gameObject.tag == "Puck")
    {
        // Commenting out the following "AddForce" statement causes the bug to not happen
        coll.gameObject.GetComponent<Rigidbody2D>().AddForce(CurrVelocity);
        SoundManager.RandomizeSfxPitch(click);
    }
}

void OnCollisionStay2D(Collision2D coll)
{
    if (coll.gameObject.tag == "Puck")
    {
        // Commenting out the following "AddForce" statement causes the bug to not happen
        coll.gameObject.GetComponent<Rigidbody2D>().AddForce(CurrVelocity);
    }
}

标签: androidunity3dgame-physics

解决方案


推荐阅读