2015-07-31 5 views
0

Итак, я работаю со старым проектом, написанным в Unity 4.x, и должен заставить его работать в 5.x с некоторыми изменениями в физике.Как переключиться с использования RigidBody.SleepVelocity на RigidBody.SleepThreshold в Unity

Существует несколько вызовов RigidBody.SleepVelocity, которые в соответствии с документацией api теперь больше не поддерживаются.

Замена RigidBody.SleepThreshold.

Я понимаю различия между ними, но я не знаю, как конвертировать из старой системы в новую.

Как бы я мог конвертировать из использования SleepVelocity в Threshold?

(кстати, я работаю в JS, но я мог читать equivilent C#)

ответ

0

Согласно документации Rigidbody.sleepVelocity представляет скорость, и Rigidbody.sleepThreshold представляет собой энергию. Поэтому, если правильно понимать все, что вам нужно сделать, это найти некоторый множитель, чтобы умножить его на свое старое значение скорости, поэтому значение энергии результата вызовет такое же поведение.

Для энергии, вычисленной объекта вы можете использовать это:

float E = rigidbody.mass * rigidbody.velocity.sqrMagnitude * 0.5f; 

Просто найти подходящий E значение и использовать его для Rigidbody.sleepThreshold

+0

Это все это? Я думал, что это будет легкое изменение. но масса не входит в нее. – unknownSPY

+0

о, да. зафиксировала формулу – Utamaru