安静如鸡

  • Home
  • About Me
  • Contact Me
  • 东京女子篮球活动记录
一个博客
  1. 首页
  2. Tech
  3. Unity
  4. 正文

【Unity小贴士】关于OnCollisionEnter和OnTriggerEnter

2023-06-28 0人点赞 0条评论

这两个事件其实大家都很熟悉了,一个检测碰撞,一个检测物体通过Collider。文档里基本把这两个事件对应。

最近有人问,在一个项目里,物体设置成Trigger的情况下,项目启动后并不会调用OnTriggerEnter事件,只有在物体运动到和对象接触的时候事件才被调用。但是同一个物体设置成刚体(Is Tigger不打勾)的话OnCollisionEnter在启动时就会被调用。

我再利用OnCollisionEnter的参数把接触点都打印出来并且生成object之后发现,接触点并没有被检测碰撞的对象。也就是说,检测对象在视觉上并没有和被检测对象相撞,但是却调用了OnCollisionEnter。

造成这种情况是因为这个Default Contact Offset参数,如果两个物体的距离小于Default Contact Offset就会默认两个物体碰撞。默认设置的0.01已经很小了几乎肉眼看不出,但是如果项目整体的scale也设置的很小就会出问题。

同时我测试了一下这个参数确实只影响刚体碰撞而不会对Trigger造成影响。下图我建了两个同高度的Cube,其中一个设置成IsTrigger = true,取消Use Gravity,Default Contact Offset设置了比较大的参数,启动后只有刚体的事件被调用。当调整高度Tigger的物体接触到Plane之后OnTriggerEnter才会被调用。

标签: 暂无
最后更新:2023-10-03

Ellison

什么都懂点,什么都不精。属于混吃等死,享受生活,过一天算一天的享乐主义。喜欢电影,阅读,以及游戏和美食。

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 安静如鸡. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang