这个问题对于刚接触unity的新手来说真是头秃,还好有csdn的老铁们的帮助,这里我再用自己的语言归纳一些。
在unity中物体之间有“接触”和“碰撞”两种状态,产生这两种状态的两个物体都需要具有Box Collider 2D组件(碰撞体)。“接触”状态,不需要力,如碰到金币捡金币不需要力;碰撞”,需要力的作用,如子弹打到木块,子弹会弹回,木块会被撞远。
Box Collider 2D有一个bool参数:
(1)IsTrigger,如果选中了(两个物体至少有一个的Box Collider 2D的IsTrigger选中),则两个物体间是“接触”状态,不需要力,触发方法为
private void OnTriggerEnter2D(Collider2D collision)
{
Destroy(gameObject);
}此时两个物体中有一个具有Rigidbody2D组件就可触发上述方法;
(2)IsTrigger,如果不选中,则两个物体间的状态是“碰撞”,需要力的作用,触发方法为:
private void OnCollisionEnter2D(Collision2D collision)
{
}
此时被碰撞物体必须要具Rigidbody2D组件才可触发上述方法否则不触发。
另外补充:
调节物体与其他物体接触范围的方法: