Unity2d碰撞触发器你不知道的事情

   博主上一篇贴子有讲到Unity3d的碰撞器触发的条件(f附上链接https://blog.csdn.net/qq_37055562/article/details/82730378),那么Unity2d碰撞器触发的条件和Unity3d的触发条件是一样的吗?

那么大家一起来看一下,我先在场景中创建两只乌龟

Unity2d碰撞触发器你不知道的事情_第1张图片

左边的乌龟就叫做会动的乌龟挂上一个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.csdn.net/qq_37055562/article/details/82730378,这里主要是讲不同点),我发现2d碰撞器触发的条件主要是要注意Rigibody2D,当我给会动的乌龟加上Rigibody2D并且将它的BodyType选择为static时(不动的乌龟仅仅加上一个Boxcollider2D),碰撞器是无法触发的。

Unity2d碰撞触发器你不知道的事情_第2张图片

所以我们如果要触发碰撞器,我们应该把Rigibody2d的BodyType选择为Dynamic或者kinematic

 

友情提示:如果不想两个物体发生碰撞,在Box Collider2D中勾选Is Trigger即可。

Unity2d碰撞触发器你不知道的事情_第3张图片

要是想发生碰撞(不会触发碰撞器),Box Collider2D中的Trigger不勾,并且Rigibody中的BodyType只能选Dynamic;

 

总结:1.要触发碰撞器每个物体必须要有Collider2D

           2.其中一个物体必须要有Rigibody2D,并且BodyType不能是Static(Rigibody2D里面的Simulated一定要勾选)

           3.必须要有一个碰撞器勾选了Is Trigger(最好两个都勾下)

           如果有错误的地方,欢迎大家指正,一起学习哈!

 

 

 

 

你可能感兴趣的:(Unity2d碰撞触发器你不知道的事情)