gpt4 book ai didi

unity-game-engine - OnCollisionStay 与 OnCollisionEnter

转载 作者:行者123 更新时间:2023-12-03 07:37:49 30 4
gpt4 key购买 nike

嗨,我使用 Unity 一段时间了,但我仍然无法区分 OnCollisionStay 和 OnCollisionEnter 之间的区别。我假设当刚体(如球)与另一个刚体/碰撞体(如墙壁)接触时调用 OncollisionEnter。但是当我查看 OnCollisionStay 的示例时,我完全困惑了。即使它每帧调用一次,如果我跳到空中并撞到我上方的天花板,它仍然被调用吗?具体有什么区别?以下是 Unity 文档的内容和我使用的代码。

“当此碰撞体/刚体开始接触另一个刚体/碰撞体时,将调用 OnCollisionEnter。”

“对于每个接触刚体/碰撞体的碰撞体/刚体,每帧调用一次 OnCollisionStay。”

if(Input.GetKeyDown(KeyCode.W) && OnGround == True)
{
rigidbody.velocity.y = jumpHeight;
}

onGround = false;

function OnCollisionStay()
{
onGround = true;
}

最佳答案

这真的很简单。假设碰撞开始,碰撞体保持相交一段时间(几帧),一段时间后它们再次分离。那么事件是:

  • OnCollisionEnter 仅适用于第一帧,在 OnCollisionExit 之前不会再出现
  • OnCollisionStay 持续整个持续时间(所有帧)
  • OnCollisionExit 仅适用于最后一帧

Even if its called once per frame, If I for example jump up in the air and hit a ceiling above me, is it still called?

当然是这样。但接下来就是新的碰撞。但是,如果中间有一段时间您没有与任何物体发生碰撞,则在此期间您将不会收到 OnCollisionStay 事件。

为了更深入地了解这些事件,最好创建一个简单的演示场景,在其中手动使两个碰撞器相交,并将一些文本写入控制台以表示各种事件。

关于unity-game-engine - OnCollisionStay 与 OnCollisionEnter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23681719/

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