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