我知道如何检测基本的边界框碰撞
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);
没有区别,有什么建议吗?
感谢
更新,请注意我忘了补充一点,当时间刻度为零并且碰撞不起作用时我需要这个工作
答案 0 :(得分:1)
这不是检测碰撞的正确方法。请改用MonoBehaviour.OnCollisionEnter
或MonoBehaviour.OnTriggerEnter
。
在对撞机其他人进入触发器时调用
当此对撞机/刚体开始接触另一个刚体/对撞机时,会调用<{OnCollisionEnter
。
只需将以下脚本附加到GameObject
,该脚本将与另一个GameObject
发生冲突。碰撞发生时将调用该方法。
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
void OnCollisionEnter(Collision collision) // or void OnTriggerEnter(Collider other)
{
//...
}
}