Unity 2D碰撞与预制件无法在手机上工作

时间:2016-04-05 16:33:36

标签: android unity3d touch collision-detection

当我使用我的手机作为测试设备时,OnTriggerEnter有点问题。 我有一些触摸代码可以成功让我在屏幕上拖动对象。 然后我让对象与屏幕上的其他对象发生碰撞。

在我将物体变成预制件之前,这种方法非常有效。 (我需要这样做,因为对象是在运行时随机生成的)

现在,我仍然可以移动屏幕周围的物体,但它们不再与其他物体碰撞,这些物体也是预制物。但是,当它在统一编辑器中的笔记本电脑上运行时,它仍能正常工作。

我的所有物体都在它们上面有碰撞器并且检查了触发器,并且移动物体具有刚体。

开启触发输入代码

style.css

触摸代码

public void OnTriggerEnter(Collider other)
{
    Debug.Log ("here");
    Debug.Log(this.gameObject.tag +"is this");
    Debug.Log(other.gameObject.tag + "is other");
    if (this.gameObject.tag == other.gameObject.tag) 
    {
        Debug.Log("here2)");
        Reftomanager.miniGameScore++;
        Reftomanager.updateScore();
        Destroy(this.gameObject);
    }
}

我完全难过,所以任何帮助都会令人惊叹。

由于

2 个答案:

答案 0 :(得分:1)

最近刚收到同样的错误。我建议使用

If(other.gameObject.CompareTag ("YourTagName"))

另外,如果您最近添加了标签或编辑过任何标签,我发现Unity有一个错误,您的标签将不会在您的Android版本中注册,除非您重新启动统一。

GL

答案 1 :(得分:0)

由于您使用3D对撞机,您分配它们的位置是否可能不同? Touch.position是一个Vector2,这意味着ScreenToWorldPoint将使用0表示z。如果您使用的z值不是0的Vector3来获取编辑器中的世界点(独立输入),即使x和y相同,它也可以获得不同的值。

另一种可能性是,在对象实例化时,代码中的其他位置发生特定于平台的错误。如果它不在同一个Monobehavior中,你的移动代码仍然可以正常工作。

如果你有Android,可以使用带有Unity标记的Android Monitor来检查错误消息。