Android Unity 2D与手机上不工作的预制件发生碰撞

Android Unity 2D与手机上不工作的预制件发生碰撞,android,unity3d,touch,collision-detection,Android,Unity3d,Touch,Collision Detection,当我使用手机作为测试设备时,OnTiggerEnter有点问题。 我有一些触摸代码,可以让我在屏幕上拖动物体。 然后让这些对象与屏幕上的其他对象发生碰撞 这是完美的工作,直到我把对象变成预制件。(我需要这样做,因为对象是在运行时随机生成的) 现在,我仍然可以在屏幕上移动对象,但它们不再与其他对象碰撞,这些对象也是预设的。不过,在unity编辑器中在我的笔记本电脑上运行时,它仍然可以正常工作 我的所有对象上都有碰撞器,并选中了触发器,移动的对象有刚体 触发时输入代码 public void OnT

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

这是完美的工作,直到我把对象变成预制件。(我需要这样做,因为对象是在运行时随机生成的)

现在,我仍然可以在屏幕上移动对象,但它们不再与其他对象碰撞,这些对象也是预设的。不过,在unity编辑器中在我的笔记本电脑上运行时,它仍然可以正常工作

我的所有对象上都有碰撞器,并选中了触发器,移动的对象有刚体

触发时输入代码

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);
    }
}
触摸码

    if (Input.touchCount > 0) 
    {


        Touch touch = Input.GetTouch(0);

        switch(touch.phase)
        {

        case TouchPhase.Began:
                Ray ray = Camera.main.ScreenPointToRay (touch.position);

                if (Physics.Raycast(ray,out hit)) 
                {
                    thisObject = hit.collider.gameObject;
                    touchPos = Camera.main.ScreenToWorldPoint (touch.position);
                    if(thisObject.name!="circle")
                    {
                    draggingMode = true;
                    }
                }


                break;

        case TouchPhase.Moved: 
            if (draggingMode) 
            {
                touchPos = Camera.main.ScreenToWorldPoint (touch.position);
                newCentre = touchPos;
                thisObject.transform.position = touchPos;
            }
            break;


        case TouchPhase.Ended: 

            draggingMode = false;

        break;
        }
    }


}
我完全被难倒了,所以任何帮助都会令人惊讶


谢谢,因为您使用的是3D碰撞器,您为它们指定的位置是否可能不同?Touch.position是矢量2,这意味着将使用0表示z。如果使用z值不是0的矢量3在编辑器中获取世界点(独立输入),则即使x和y相同,也可以获取不同的值

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


如果你有安卓系统,你可以使用Unity标签来检查错误信息。

最近也出现了同样的错误。我建议使用

If(other.gameObject.CompareTag ("YourTagName"))
另外,如果你最近添加了一个标签或编辑了任何标签,我发现unity有一个bug,除非你重新启动unity,否则你的标签不会注册到你的android构建中


GL.

谢谢Robert,结果证明Z值在实例化时发生了更改。手动将其更改回0成功:)很高兴听到我能够提供帮助!:)我的问题和你完全一样,关闭了Unity,重新开放,构建了Unity,它成功了。谢谢。对于其他想知道的人,我使用的是Unity 2018.2.0 Fusing Unity 2019.6f1。在添加了一些新标记之后,同样的问题也发生了。是的,重新启动unity是唯一的选择。谢谢