Unity如何找到对象是否与网格对撞机相交(不是边界框,实际网格)?

时间:2016-12-09 08:34:46

标签: unity3d

我知道如何检测基本的边界框碰撞

 Collider collider1= obj1.GetComponent<Collider>();
 Collider collider2= obj2.GetComponent<Collider>();
 if (collider1.bounds.Intersects(collider2.bounds))
                     Debug.Log("collides with=" + objCollider.name);

但这不是很准确,我想知道如果他们的实际网格碰撞,我试过

 MeshCollider collider1= obj1.GetComponent<MeshCollider>();
  MeshCollider collider2= obj2.GetComponent<MeshCollider>();
  if (collider1.bounds.Intersects(collider2.bounds))
         Debug.Log("collides with=" + objCollider.name);

没有区别,有什么建议吗?

感谢

更新,请注意我忘了补充一点,当时间刻度为零并且碰撞不起作用时我需要这个工作

1 个答案:

答案 0 :(得分:1)

这不是检测碰撞的正确方法。请改用MonoBehaviour.OnCollisionEnterMonoBehaviour.OnTriggerEnter

  在对撞机其他人进入触发器时调用

OnTriggerEnter

     当此对撞机/刚体开始接触另一个刚体/对撞机时,会调用<{OnCollisionEnter

只需将以下脚本附加到GameObject,该脚本将与另一个GameObject发生冲突。碰撞发生时将调用该方法。

using UnityEngine;

public class ExampleClass : MonoBehaviour
{
    void OnCollisionEnter(Collision collision) // or void OnTriggerEnter(Collider other)
    {
        //...
    }
}