嗨,我已经使用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;
}Run Code Online (Sandbox Code Playgroud)
这真的很简单.让我们假设碰撞开始,碰撞器保持相交一段时间(几帧),并在一段时间后再次分开.那么事件是:
即使它每帧调用一次,如果我跳到空中并撞到我上方的天花板,它仍然被称为?
当然是啦.但是那次新的碰撞.但是如果有一段时间你没有碰到任何东西,那么你将不会在这段时间内获得OnCollisionStay事件.
为了更深入地了解这些事件,最好创建一个简单的演示场景,在该场景中手动交叉两个碰撞器,并将一些文本写入控制台以用于各种事件.
| 归档时间: |
|
| 查看次数: |
13583 次 |
| 最近记录: |