Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的OnTiggerInter2D事件只在android上触发,而不应该触发?_Android_Unity3d_Game Physics - Fatal编程技术网

为什么我的OnTiggerInter2D事件只在android上触发,而不应该触发?

为什么我的OnTiggerInter2D事件只在android上触发,而不应该触发?,android,unity3d,game-physics,Android,Unity3d,Game Physics,我一直在努力解决一个冲突bug,这个bug只有在我将游戏安装到android设备上时才会发生 我有一个非常简单的游戏,像空中曲棍球。一些对象表示桨、一个冰球、两个用于得分的末端区域和墙。每当我移动其中一个桨叶并以非常低的速度与冰球相撞时,我的OnTriggerInter2D项目都会在我的末端区域进行,即使冰球根本不在末端区域附近。以下是我的终端区域控制器脚本中的OnTiggerEnter2D函数: // EndZone void OnTriggerEnter2D(Collider2D Other

我一直在努力解决一个冲突bug,这个bug只有在我将游戏安装到android设备上时才会发生

我有一个非常简单的游戏,像空中曲棍球。一些对象表示桨、一个冰球、两个用于得分的末端区域和墙。每当我移动其中一个桨叶并以非常低的速度与冰球相撞时,我的OnTriggerInter2D项目都会在我的末端区域进行,即使冰球根本不在末端区域附近。以下是我的终端区域控制器脚本中的OnTiggerEnter2D函数:

// EndZone
void OnTriggerEnter2D(Collider2D Other)
{

Debug.Log("EndZone::OnTriggerEnter2D " + playerNumber.ToString());
    if (Other.gameObject.tag == "Puck")
    {
        Observer.SendMessage("Score", "" + playerNumber.ToString());
    }
}
我不确定还有什么其他相关信息。我会提供任何要求,包括我的整个项目,如果认为必要的

这个bug只在我实际构建android时才会发生,而不是在桌面上运行游戏时。即使我使用平板电脑和unity remote提供输入

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

连接到我的桨的我的桨控制器的代码:

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);
    }
}
void oncollisioninter2d(Collision2D coll)
{
Log(“PableController::OnCollisionInter2D”+coll.gameObject.tag);
如果(coll.gameObject.tag==“Puck”)
{
//注释掉下面的“AddForce”语句会导致错误不会发生
coll.gameObject.GetComponent().AddForce(CurrVelocity);
SoundManager.RandomizeSfxPitch(单击);
}
}
无效碰撞Stay2D(碰撞2D coll)
{
如果(coll.gameObject.tag==“Puck”)
{
//注释掉下面的“AddForce”语句会导致错误不会发生
coll.gameObject.GetComponent().AddForce(CurrVelocity);
}
}

对我来说,这些问题听起来很神奇。很可能这不是真正的情况。我想你的物体碰到了另一个物体。记录检测到的对象,您会感到惊讶
void OnTriggerEnter2D(collidater2dother){Debug.Log(Other.name);}
@Programmer我回家后会这样做。我现在在工作。然而,我已经运行了一些android studio调试,发现endzone和OnTiggerEnter2D事件都在触发。不仅如此,冰球游戏对象标签是冰球独有的,两个触发事件都会发送“Score”消息,当你回家时检查它正在触摸的对象。这是找到为什么会发生这种情况的最简单的方法。@Programmer我按照你的建议做了。以下是调试输出:。显然,两个末端区域都是由冰球触发的。但有趣的是,还有划桨。