A和B碰撞触发OnCollision函数条件如下:
1.A和B都要有collider。(子物体有也可以)
2.A和B至少有一个刚体(Rigidbody)组件,且刚体的isKinematic为false。如果为true不会触发。
3.挂载脚本的物体必须有刚体,没有刚体不会触发。
应用场景:传送带和货物之间且检测货物是否在传送带上。尤其是复杂的顶升移栽机,有链式传送带和辊道组成。实现方式:是获取顶升移栽机下的所有rd组件,并附上碰撞检测脚本,
DeviceOccupiedState deviceOccupiedState;
public void Regist(DeviceOccupiedState deviceOccupiedState)
{
this.deviceOccupiedState = deviceOccupiedState;
}
public void OnCollisionEnter(Collision collision)
{
if (collision.collider.CompareTag(ConstVariable.MaterialTag))
{
deviceOccupiedState.OnCollisionEnter();
}
}
public void OnCollisionExit(Collision collision)
{
if (collision.collider.CompareTag(ConstVariable.MaterialTag))
{
deviceOccupiedState.OnCollisionExit();
}
}
如上:把子物体的碰撞发送到设备总管理中,这样就可以获取到货物是否在顶升移栽机上了。