物理系统基于collider, 没有collider的物体不会发生任何主动和被动的物理交互,也不会产生trigger相关消息。
当且仅当A和B都有碰撞体时,两者才有可能发生交互,才有可能产生trigger消息。
碰撞体collider分为两大类:trigger collider, 非trigger collider
trigger collider就是触发器,一个勾选了Is trigger的 collider不产生任何物理交互,只在其它collider进入其范围时触发一个OnTriggerEnter消息,停留其间触发OnTriggerStaty消息,退出时触发OnTriggerExit消息。
Is trigger选项将会使RigidBoy组件的物理碰撞效果失效,但会受到重力的作用。
非trigger collider就是物理碰撞体。一个取消勾选Is trigger的collider就是一个物理碰撞体(这是默认选项)。
又分为两类:障碍物(或称静态碰撞体static collider,只有collider组件)和刚体(或称动态碰撞体dynamic collider,同时有collider和rigidbody组件)
static collider一般为场景中不动的障碍物,会阻挡其它碰撞体的运动但不会被推动。如果非要移动静态碰撞体则会导致物理系统额外的计算开销及不可知的错误,对游性能造成很外的影响,不要这样使用。
dynamic collider就是动态碰撞体,刚体,具有collider和rigidbody两种组件。可以碰撞其它碰撞体,也可以被碰。
刚体如果勾选了rigidbody组件的 Is kinematic属性将变为运动学刚体,这种物体与障碍物的表现有些类似,可以称为半动态碰撞体,可移动的障碍物。运动学刚体可以推动其它物体却不可以被其它物体推动。且不受重力影响。
不存在一个物体既是触发器又是是碰撞体。只能二选一。要么是trigger, 要么非trigger
总结:物理系统中物体的分类:触发器(collider组件勾选了Is Trigger),障碍物(仅有collider组件),可移动障碍物(有collider和rigidbody组件且rigidbody组件勾选了Is Kinematic),刚体(同时具有collider和rigidbody组件)
触发器不产生任何物理交互。障碍物静止不动,会阻拦其它则体运动。
可移动障物可推动其它刚体或被刚体推动,不与障碍物互动。
刚体与则体可以互动。