Если вы работаете только с кубиками, которые имеют три компонента (lengthX, длинно, lengthZ), а выжимка всегда перпендикулярно к поверхности (это означает, углы не изменятся), вы можете в основном сократить проблемы с поиском двух компонентов при фиксации. В вашем примере ширина устанавливается на расстояние между гранями двух сжимающих кубиков и, поскольку вам нужно сохранить область, вы можете вывести высоту.
Area = Width * Height
Height = Area/NewWidth
Width = NewWidth
В трех измерениях можно предположить два компонента, которые вы хотите вывести, равны ...
Как я пишу это, я думаю, вы могли бы имитировать это правильно, с помощью пружин. Каждый край вашего квадрата/куба является пружиной, соединяющей углы. Шероховатость пружины должна быть определена, а l0 должна быть длиной, которую вы рассматриваете.
Небольшое напоминание о весеннем уравнения:
Let F be the force exerced by a spring
l0 the length of the spring at rest
l the current length of the spring
k a constant that tweak the force (equivalent to the roughness of the spring)
F = k * (l - l0)
одна пружина не будет экономить площадь, если Защемление перпендикулярно к поверхности. В этом случае вам нужно будет обновить l0 неопределенного измерения.
Чувак Вы должны предоставить более подробную информацию вроде - объекты соковыжималка имеют rigidbodies и коллайдеров? они перемещаются по сценарию или по физике? могут ли они двигаться полностью и касаться друг друга? У вас не может быть готового к развертыванию скрипта, если вы не даете никаких подробностей о среде, в которой должен работать ваш скрипт. Пожалуйста, не принимайте меня грубо, удачи! –
Объекты Squeezer перемещаются по сценарию, имеют жесткие тела и коллайдеры и могут двигаться полностью. Можете ли вы написать ответ, пожалуйста? @NikaKasradze –
это старая проблема .. вот ПОЛНОЕ РЕШЕНИЕ http://answers.unity3d.com/answers/432033/view.html – Fattie