Unity3d Unity 3D:如何冻结帧以探索“Debug.DrawRay”绘制的冲突线?

Unity3d Unity 3D:如何冻结帧以探索“Debug.DrawRay”绘制的冲突线?,unity3d,debugging,Unity3d,Debugging,我试过这个: Debug.DrawRay(contact.point、collision.relativelocity、Color.white); Time.timeScale=0.0f; 帧已冻结,但线未显示。另外,我试图在画线后立即冻结更新,但没有成功,也跳过了第一次更新,仅在帧中发生碰撞时调用一次 具有持续时间,其默认值为0 这条线应该可以看到多长时间 及 持续时间是行首次显示后可见的时间(秒)持续时间为零表示仅一帧的行。 这样你就可以通过考试了,比如说2like Debug.Draw

我试过这个:

Debug.DrawRay(contact.point、collision.relativelocity、Color.white);
Time.timeScale=0.0f;
帧已冻结,但线未显示。另外,我试图在画线后立即冻结
更新
,但没有成功,也跳过了第一次
更新

,仅在帧中发生碰撞时调用一次

具有
持续时间
,其默认值为
0

这条线应该可以看到多长时间

持续时间
是行首次显示后可见的时间(秒)持续时间为零表示仅一帧的行。


这样你就可以通过考试了,比如说
2
like

Debug.DrawRay(contact.point,collision.relativelocity,Color.white,2.0f);
使其保持可见2秒钟


作为替代方案,我只需将代码放进去,这样在冲突发生时,它不仅会被调用一次,而且会在每一帧调用一次


对于其背后的问题,Unity API通常是一个很好的起点:

  • 应用于此触点对以解决碰撞的总脉冲

    总冲量是通过将施加在该碰撞对中所有接触点上的冲量相加得到的。要计算出施加的总力,可以将总冲量除以最后一帧的固定时间

  • 两个碰撞物体的相对线速度

因此,差异:
impulse
考虑了所有单独的接触/碰撞点,其中每个点可能具有不同的碰撞力和方向,而
relativeVelocity
仅是对象中心/枢轴点之间的相对速度(无所谓).

仅在第一次发生碰撞时在帧中调用一次

具有
持续时间
,其默认值为
0

这条线应该可以看到多长时间

持续时间
是行首次显示后可见的时间(秒)持续时间为零表示仅一帧的行。


这样你就可以通过考试了,比如说
2
like

Debug.DrawRay(contact.point,collision.relativelocity,Color.white,2.0f);
使其保持可见2秒钟


作为替代方案,我只需将代码放进去,这样在冲突发生时,它不仅会被调用一次,而且会在每一帧调用一次


对于其背后的问题,Unity API通常是一个很好的起点:

  • 应用于此触点对以解决碰撞的总脉冲

    总冲量是通过将施加在该碰撞对中所有接触点上的冲量相加得到的。要计算出施加的总力,可以将总冲量除以最后一帧的固定时间

  • 两个碰撞物体的相对线速度


因此,区别在于:
impulse
考虑了所有单独的接触点/碰撞点,其中每个点可能具有不同的碰撞力和方向,而
相对水平度
仅是对象中心/枢轴点之间的相对速度(无所谓)。

您在哪里调用此代码?如果它是例如
OnCollisionCenter
或类似的东西,则只会在1帧内调用它,并且
Time.timeScale=0不会有多大帮助。也许只需要一个断点就足够了?是的,它是在
OnCollisionCenter
中调用的。目的是查看和理解碰撞、相对性和碰撞、冲量的含义以及它们的方向。我希望可视化可以帮助我。你在哪里调用这个代码?如果它是例如
OnCollisionCenter
或类似的东西,则只会在1帧内调用它,并且
Time.timeScale=0不会有多大帮助。也许只需要一个断点就足够了?是的,它是在
OnCollisionCenter
中调用的。目的是查看和理解碰撞、相对性和碰撞、冲量的含义以及它们的方向。我希望可视化能帮助我。