C# Unity-OnTriggerEnter未记录冲突
我正在尝试对2D角色和碰撞器对象进行碰撞。我已经定义了OnTiggerEnter函数,以便在输入触发器时在调试器中显示消息。该角色是Unity标准资源包(包含BoxCollizedR2D)中的“CharacterRobotBoy”资源,我希望它与另一个附加了BoxCollizedR2D的对象碰撞,设置为触发器。我在第二个物体上打了勾C# Unity-OnTriggerEnter未记录冲突,c#,unity3d,C#,Unity3d,我正在尝试对2D角色和碰撞器对象进行碰撞。我已经定义了OnTiggerEnter函数,以便在输入触发器时在调试器中显示消息。该角色是Unity标准资源包(包含BoxCollizedR2D)中的“CharacterRobotBoy”资源,我希望它与另一个附加了BoxCollizedR2D的对象碰撞,设置为触发器。我在第二个物体上打了勾 using System.Collections; using System.Collections.Generic; using UnityEngine; pu
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PickUpCheck : MonoBehaviour {
private int pickUpCount;
// Use this for initialization
void Start () {
pickUpCount = 0;
}
void OnTriggerEnter(Collider collider)
{
// if (collider.gameObject.name == "RobotBoy")
// pickUpCount++;
Debug.Log("PickUp " + pickUpCount);
}
// Update is called once per frame
void Update () {
}
}
我尝试将脚本附加到角色和其他对象,但似乎无法注册与触发器的冲突
/edit-我读到有或曾经有一个OnTriggerInter2d。我试着调用它,但在VisualStudio中无法识别。不确定它是否仍然存在或者我做错了什么
/edit-将代码切换到-
void OnTriggerEnter2D(Collider2D collider)
{
// if (collider.gameObject.name == "RobotBoy")
// pickUpCount++;
Debug.Log("PickUp " + pickUpCount);
}
但还是没有运气
/edit-@Eddge已经为角色和拾取对象设置了一个公共层,尽管我认为在没有设置层的情况下仍然会发生碰撞
答案是信息丰富的,但我确保我的设置中已经有了所描述的组件——两个对象上的碰撞器,其中一个对象上存在刚体,另一个设置为触发器
/edit已解决-好的,所以我清理了调试(感谢@Eddge的建议)。我将脚本移动到角色,并注意到碰撞正在发生,但没有与拾取对象发生碰撞
我切换了OnTiggerEnter2D中的代码以输出碰撞对象的名称,这有助于我更清楚地了解发生了什么:
void OnTriggerEnter2D(Collider2D collider)
{
Debug.Log(collider.gameObject.name);
}
原来问题出在我改装为皮卡的预制件中的BoxCollizer2D上。我重建了游戏对象,解决了这个问题 如果您正在制作2D游戏,则必须使用OnTriggerInter2D(CollizedR2D other)。目前,您正在使用OnTiggerEnter,它只会注册3D碰撞。另外,请确保传递了一个碰撞的R2D作为函数的参数 因此,请将代码更改为:
void OnTriggerEnter2D(Collider2D collider)
{
// if (collider.gameObject.name == "RobotBoy")
// pickUpCount++;
Debug.Log("PickUp " + pickUpCount);
}
因此,我确保为发生碰撞提供了正确的组件(详细说明)。事实证明,我的第一个问题是使用OnCollisionCenter而不是OnCollisionEnter2D(请注意,必须使用CollizeR2D参数)。感谢卡洛斯澄清了这一点 但遗憾的是,碰撞仍然不会发生 然后我检查以确保图层没有问题。层可用于组织对象之间的碰撞交互。更多信息和信息 最后,我将脚本从拾取切换到播放器控制器,发现它能够与拾取以外的对象发生碰撞,并带有碰撞对象名称的调试日志
我重新创建了游戏object-object、boxCollizer2D和脚本,碰撞开始工作 你的角色有刚体组件吗?是的,一个刚体组件看看Carlos的答案,然后看看这些答案:关于第二个,OnTiggerEnter 2d只适用于2d碰撞器,OnTiggerEnter只适用于3d碰撞器。@Eddge听起来像个复制品!国旗或投票等。谢谢,新的信息为我在这两个链接。但仍然无法从冲突脚本中获得响应。为了澄清这一点,角色对象同时具有长方体碰撞器2D和刚体2D。拾取对象只有一个长方体碰撞器2D,但后来我添加并尝试了带有Rigidbody2D的脚本。仍然没有响应…尝试了此操作,但在运行时仍然没有可见的调试消息。很高兴知道,谢谢!