我有一个直截了当的问题,但是我缺乏统一的知识阻碍了我。
我在场景中以各种角度旋转了原始类型的游戏对象(例如,立方体/胶囊/球体)。它们已经实例化。
然后我将一个新的游戏对象基本类型添加到场景中,我想知道这个新的游戏对象是否与场景中的当前基本类型重叠/相交。
为此,我一直在使用gameobject1.GetComponent<Collider>.bounds.Intersects(gameobject2.GetComponent<Collider>.bounds)
但是这是行不通的,因为边界是一个边界框,因此即使游戏对象在视觉上没有直接接触原始类型的游戏对象之一,如果它在边界框内,它也会将其返回为true(即他们相交),这不是我想要的:
我确定还有另一种统一的方法,但是我不知道该怎么做!
任何帮助将不胜感激。谢谢
答案 0 :(得分:1)
使用MeshCollider,而不是BoxCollider
void OnCollisionEnter(Collision collision)
{
foreach (ContactPoint contact in collision.contacts)
{
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
}
答案 1 :(得分:0)
您可以改用MeshCollider(只要您的对象很简单),然后将MeshCollider IsTrigger属性设置为true。
然后在代码中可以执行以下操作:
void OnTriggerEnter(Collider col)
{
}
或
void OnCollisionEnter(Collision col)
{
}
任何物体进入对撞机时,都会调用上述功能,您可以在那里做所需的事情。
编辑:您的对象将需要添加刚体以使碰撞起作用