碰撞在 PC 模拟器上有效,但在 android 设备上无效

Collision work on pc emulator but not on android device

我有 2 个带有对撞机的对象。球体对象("ball")应该与网格("goal")发生碰撞:

它们都是非 kimetric。

我使用下一个代码:

function OnCollisionEnter(theCollision : Collision){
    if(theCollision.gameObject.name == "goal" )
    {
        (tm.GetComponent(TextMesh) as TextMesh).text  =  "enter1";
        forceAmount.z=-1000;
        rb.AddForce(forceAmount);
    }
}

代码在 unity 模拟器中运行完美 但是当我将它构建为 apk 文件并安装在我的 android 平板电脑上时,它不起作用。

谁能帮我解决这个问题?

Unity 的做法是将游戏对象设置为 Tag。标签的使用是轻量级的,您可以从编辑器中设置标签,然后使用:

if (theCollision.gameObject.tag == "goal")

我遇到了类似的问题——在编辑器中检测到碰撞,但在 Android 中未检测到。我通过将半径从 0.5 调整到 20 来解决它。

我遇到了同样的问题,似乎 Unity 将标签部署到 android 设备时出现了一些问题。

在我的场景中,我有一个 RigidBody 和一个 PreFab(设置为触发器)。在我的代码中,我设置了 OnTriggerEnter 以检查触发的项目的标签,如果它与我的 PreFab 标签相同,我将隐藏触发的项目。

此代码在我的编辑器中完美运行,但是,当我将此解决方案部署到 android 设备时它不起作用。

在测试和修改一些东西之后,解决问题的方法是为我的 PreFab 使用 pre-defined 标签之一(而不是我使用的自定义标签 "PickUpItem")。

在我看来,unity 5 向 android 设备发送自定义标签时出现问题,但对于预设标签,它工作正常。

我在 2019 年才 运行 解决这个问题。在阅读了一些评论后,似乎仍然存在将标签部署到 Android 的错误。我正在使用

if(col.gameObject.tag == "tagName") 

但我将其更改为检查 gameObject.name 并且有效。

2019 年这里出现同样的问题,是我删除了一些未使用的标签后造成的。这只是重新启动 Unity 的问题。