Я пробовал это:
Debug.DrawRay(contact.point, collision.relativeVelocity, Color.white);
Time.timeScale = 0.0f;
кадр был заморожен, но линия не отображалась. Кроме того, я безуспешно пытался заморозить в Update
сразу после рисования линии, а также после пропуска первого Update
.
Да, это называется в OnCollisionEnter
. Цель состоит в том, чтобы увидеть и понять, что означают collision.relativeVelocity
и collision.impulse
и что показывают их направления. Я надеюсь, что визуализация поможет мне.
OnCollisionEnter
вызывается только один раз в кадре при первой коллизии.
Debug.DrawLine
имеет необязательный параметрduration
из которых по умолчанию 0
How long the line should be visible for.
а также
The
duration
is the time (in seconds) for which the line will be visible after it is first displayed. A duration of zero shows the line for just one frame.
Таким образом, вы можете пройти, например. 2
нравится
Debug.DrawRay(contact.point, collision.relativeVelocity, Color.white, 2.0f);
чтобы он оставался видимым в течение 2 секунд.
В качестве альтернативы я бы просто поместил код в OnCollisionStay
, чтобы он вызывался не только один раз, но и каждый кадр, пока происходит коллизия.
Для ответа на вопрос Unity API обычно является хорошей отправной точкой:
The total impulse applied to this contact pair to resolve the collision.
The total impulse is obtained by summing up impulses applied at all contact points in this collision pair. To work out the total force applied you can divide the total impulse by the last frame's fixedDeltaTime.
The relative linear velocity of the two colliding objects.
Итак, разница: impulse
учитывает все отдельные точки контакта/столкновения, где каждая может иметь разные силы и направления столкновения, а relativeVelocity
— это только относительная скорость между центрами объекта/точками вращения (это не имеет значения).
Где вы вызываете этот код? Если это, например.
OnCollisionEnter
или что-то подобное, он будет вызываться только в кадре 1, иTime.timeScale=0;
не сильно поможет. Может быть, уже достаточно было бы просто отладка с точкой останова?