C# Unity OnTriggerInter2d未注册
我刚开始使用unity,在注册触发器冲突时遇到了一个真正的问题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多边形碰撞器和刚体。我还设置了一个触发器(尝试将两者都用作触
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
中进行检查
OnTriggerEnter2D
事件的对象需要具有isTrigger=true
欢迎来到SO。请不要使用代码截图。在2D物理中,我相信z坐标被忽略了,所以我认为这不是问题所在。同样在本例中,仅为了测试,我个人不会编写脚本来移动对象。我只需运行游戏,导航到
场景
选项卡,然后用移动工具
拖动对象。