Unity3D的OnTriggerEnter和OnCollisionEnter⽅法
两个物体都有碰撞体和刚体时:
情况1:当物体A勾选了isTrigger,则触发了OnTriggerEnter⽅法.
情况2:当A,B两个物体都勾选了isTrigger,则触发了OnTriggerEnter⽅法.
情况3:当A,B两个物体都没有勾选isTrigger,则触发了OnCollisionEnter⽅法
结论1:如果发⽣了OnTriggerEnter⽅法,⾄少有⼀个物体勾选了isTrigger;如果想发⽣OnCollisionEnter⽅法,则不需要勾选
isTrigger。
结论2:OnTriggerEnter和OnCollisionEnter冲突,不能同时发⽣。
来⾃官⽅的表格:
当A,B有⼀个添加了刚体(Rigidbody)时:
OnCollisionEnter⽅法:
若A添加了刚体,B没有添加刚体,A去碰撞B,则A会被弹开,B不会运动,此时A、B都会触发OnCollisionEnter⽅法。
若A添加了刚体,B没有添加刚体,B去碰撞A,不会发⽣碰撞效果,此时A和B都不会触发OnCollisionEnter⽅法。
OnTriggerEnter⽅法:
只要A和B中有⼀个添加了刚体,⽆论谁碰撞谁,两者都会触发OnTriggerEnter⽅法。但由于⾄少⼀⽅勾选了isTrigger,所以不会发⽣碰
撞效果。
总结:
OnCollisionEnter⽅法要求碰撞的发起⽅必须拥有刚体,⽽被碰撞⽅有没有刚体并不重要。OnTriggerEnter⽅法则对此没有要求,只需要
碰撞双⽅有⼀个具有刚体即可触发。即刚体是⼀个判断是否实现碰撞的是与否的标志。
刚体对于系统的开销是很⼤的,所以在使⽤刚体时,根据可能发⽣的碰撞触发事件,适当的减少刚体,是⼀个减少资源消耗的好办法。⽐
如地⾯就可以不设置刚体,因为地⾯是永远不动的,把⼈物设置刚体就可以实现真实的物理碰撞效果了。
OnTriggerEnter和OnCollisionEnter的选择:
如果想实现两个刚体物理的实际碰撞效果时候⽤OnCollisionEnter,Unity引擎会⾃动处理刚体碰撞的效果。
如果想在两个物体碰撞后⾃⼰处理碰撞事件⽤OnTriggerEnter。
本文发布于:2022-11-25 19:33:18,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/20411.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |