首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OnTriggerEnter触发太晚

OnTriggerEnter触发太晚
EN

Stack Overflow用户
提问于 2019-05-29 02:19:54
回答 1查看 573关注 0票数 3

我正在尝试制作一个粘性手榴弹,在碰撞时禁用它的刚体,使用OnCollisionEnter()。但是,当明显没有发生冲突时,OnCollisionEnter()就会触发,正如您在下图中所看到的:https://imgur.com/w9KMEff。这会导致我的手榴弹卡在空中。我怀疑这是因为物理循环和渲染循环之间缺乏同步。此外,我的标准“非粘性”手榴弹使用相同的模型&工作得很好。

我已经尝试了以下几种方法:

  • 验证没有其他可能导致我的手榴弹“卡在空中”的碰撞器,
  • 使用OnTriggerEnter()代替。结果好一点,但问题是它发射得太晚了,只有在手榴弹在障碍物内或敌人的时候。从0.01到0.001,
  • 在所有objects
  • Tweak PhysicsManager.DefaultContactOffset中增加了刚体和连续碰撞检测,正如Eliasar
  • Switch从"PCM“到”旧接触生成“

所建议的那样。

所有这些都不起作用,所以我感到有点绝望。提前感谢您的帮助!

我用来在碰撞时粘住手榴弹的代码:

代码语言:javascript
复制
void OnCollisionEnter(Collision c) {
   rigidbody.isKinematic = true;
   transform.parent = c.transform;
}
EN

回答 1

Stack Overflow用户

发布于 2019-05-29 02:33:03

对于您的对象比例,PhysicsManager.DefaultContactOffset可能设置得太高

根据这个Unity forum post,如果你的对象的比例太小,你的物理余量可能太高。OnCollisionEnter将在一个物理滴答期间发射,并可能比你预期的更早更新手榴弹的位置。这就解释了为什么它会停留在接触点之外,而OnTriggerEnter会在1帧之后处理。

文本形式的Unity帖子

Max_van_Hell,2017年6月1日

天啊,宝贝,我终于找到问题所在了!

显然,PhysicsManager.DefaultContactOffset对于我的规模来说太高了。默认接触偏移量约为0.02,对于约10 it的虚拟对象,它显然会产生巨大的误差。

这对我来说从来都不是问题,因为在大多数图形或游戏项目中,对象的规模实际上要大得多,所以这样的接触偏移不会有太大的影响。

然而,由于这是一个HoloLens项目,并且我正在使用10厘米-100厘米左右的虚拟对象,接触偏移量更合理。

无论如何,非常感谢你的帮助!

干杯,

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56348007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档