博主上一篇贴子有讲到Unity3d的碰撞器触发的条件(f附上链接https://blog.youkuaiyun.com/qq_37055562/article/details/82730378),那么Unity2d碰撞器触发的条件和Unity3d的触发条件是一样的吗?
那么大家一起来看一下,我先在场景中创建两只乌龟
左边的乌龟就叫做会动的乌龟挂上一个MoveTo脚本
public GameObject Target;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
transform.position = Vector3.MoveTowards(transform.position, Target.transform.position, 5 * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log("true");
}
右边的乌龟叫不会动的乌龟挂上脚本Test
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
}
void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log("false");
}
经过我的测试(大致测试过程可以看上一篇帖子https://blog.youkuaiyun.com/qq_37055562/article/details/82730378,这里主要是讲不同点),我发现2d碰撞器触发的条件主要是要注意Rigibody2D,当我给会动的乌龟加上Rigibody2D并且将它的BodyType选择为static时(不动的乌龟仅仅加上一个Boxcollider2D),碰撞器是无法触发的。
所以我们如果要触发碰撞器,我们应该把Rigibody2d的BodyType选择为Dynamic或者kinematic
友情提示:如果不想两个物体发生碰撞,在Box Collider2D中勾选Is Trigger即可。
要是想发生碰撞(不会触发碰撞器),Box Collider2D中的Trigger不勾,并且Rigibody中的BodyType只能选Dynamic;
总结:1.要触发碰撞器每个物体必须要有Collider2D
2.其中一个物体必须要有Rigibody2D,并且BodyType不能是Static(Rigibody2D里面的Simulated一定要勾选)
3.必须要有一个碰撞器勾选了Is Trigger(最好两个都勾下)
如果有错误的地方,欢迎大家指正,一起学习哈!