gpt4 book ai didi

c# - OnTriggerEnter 触发太迟

转载 作者:行者123 更新时间:2023-11-30 15:51:42 25 4
gpt4 key购买 nike

我正在尝试通过使用 OnCollisionEnter() 在碰撞时禁用其刚体来制作粘性手榴弹。但是,OnCollisionEnter() 会在明显没有发生碰撞时触发,如您在这张图片中所见:https://imgur.com/w9KMEff .这导致我的手榴弹悬在空中。我怀疑这是由于物理循环和渲染循环之间缺乏同步。此外,我的标准“非粘性”手榴弹使用相同的型号并且工作正常。

我已经尝试过以下方法:

  • 确认没有其他碰撞体可以引起我的手榴弹“悬在空中”

  • 改用 OnTriggerEnter()。结果好一点,但问题是它发射得太晚了,只有在手榴弹进入障碍物或敌人内部时才发射。

  • 为所有对象添加刚体和连续碰撞检测

  • 按照 Eliasar 的建议,将 PhysicsManager.DefaultContactOffset 从 0.01 调整为 0.001

  • 从“PCM”切换到“遗留联系人生成”

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

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

void OnCollisionEnter(Collision c) {
rigidbody.isKinematic = true;
transform.parent = c.transform;
}

最佳答案

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

根据这个Unity forum post ,如果您的对象的比例太小,您的物理余量可能会太高。 OnCollisionEnter 将在 Physics tick 期间触发,并且可能比您预期的更快更新手榴弹的位置一帧。这可以解释为什么它会粘在接触点之外,而 OnTriggerEnter 会在 1 帧后处理。


Unity以文本形式发布

Max_van_Hell, Jun 1, 2017

oh god yeah Baby, I finally found the issue!

Appearantly the PhysicsManager.DefaultContactOffset was too high for my scale. The Default contact Offset was about 0.02 and with virtual objects which are around 10cm it yields a HUGE error margin obviously.

That never was a Problem for me, since in most graphics or game projects the scale of the objects is actually much larger so that such a contact Offset does not have a huge influence.

However, since this is a HoloLens Project and I am working with virtual objects which are around 10cm - 100cm the contact offset is more sensible.

Anyway, thank you much for your help!

cheers,

关于c# - OnTriggerEnter 触发太迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56348007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com