Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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
C# Unity OnTriggerInter2d未注册_C#_Visual Studio_Unity3d_Collision - Fatal编程技术网

C# Unity OnTriggerInter2d未注册

C# Unity OnTriggerInter2d未注册,c#,visual-studio,unity3d,collision,C#,Visual Studio,Unity3d,Collision,我刚开始使用unity,在注册触发器冲突时遇到了一个真正的问题 public void OnTriggerEnter2D(Collider2D other) { print("collide"); if (other.CompareTag("Fish")) { print("Caught"); } } 我在这两个项目上都有2D多边形碰撞器和刚体。我还设置了一个触发器(尝试将两者都用作触

我刚开始使用unity,在注册触发器冲突时遇到了一个真正的问题

public void  OnTriggerEnter2D(Collider2D other)
{
    print("collide");
    if (other.CompareTag("Fish"))
    {
        print("Caught");
    }
}
我在这两个项目上都有2D多边形碰撞器和刚体。我还设置了一个触发器(尝试将两者都用作触发器)。但是,一个UI项是精灵,另一个是图像。 这两个项目也标有“鱼”

非常感谢您的帮助。
谢谢

一个精灵和一个图像都可能与另一个图像发生碰撞。可能的错误是,您的精灵可能看起来像在触摸图像,但在场景中画布可能离您很远,所以相机可能会欺骗您。以下是我的测试的示例代码:

移动精灵的脚本:

私有刚体2d\u刚体;
私有void Awake()=>_rigidbody=GetComponent();
私有void FixedUpdate()
{
if(Input.GetKey(KeyCode.A))
{
var movement=-transform.right*Time.fixedDelatime*250;
_刚体移动位置(transform.position+移动);
}
if(Input.GetKey(KeyCode.D))
{
var movement=transform.right*Time.fixedDelatime*250;
_刚体移动位置(transform.position+移动);
}
}
图像上的触发器脚本:

私有无效OnTriggerInter2d(冲突r2d其他)
{
Debug.Log(其他.name);
}

为了调用
OnTriggerEnter
,我可以想到四件事:

  • 两个对象的碰撞器实际上需要重叠。仅仅因为它们的渲染像素重叠,并不意味着它们的碰撞器重叠。这可以在编辑器中检查。它们的碰撞器在
    场景
    选项卡中显示为绿色轮廓。如果没有看到任何内容,请确保标签为
    Gizmos
    的按钮已打开

  • 这两个对象需要位于设置为相互碰撞的物理层中。您可以在
    Edit>Settings>Physics2D>Layer Collision Matrix
    中进行检查

  • 这两个对象都需要附加Rigidbody2D组件。确保这些不是刚体组件,因为它们是用于3D物理的

  • 包含
    OnTriggerEnter2D
    事件的对象需要具有
    isTrigger=true


  • 欢迎来到SO。请不要使用代码截图。在2D物理中,我相信z坐标被忽略了,所以我认为这不是问题所在。同样在本例中,仅为了测试,我个人不会编写脚本来移动对象。我只需运行游戏,导航到
    场景
    选项卡,然后用
    移动工具
    拖动对象。