Гравитация в физическом движке Unity движется только в одном направлении и управляется в меню «Физика» в меню «Правка» -> «Настройки проекта».
Если вы хотите сделать что-то другое, вам придется реализовать собственную гравитацию.
По сути, вы можете добавить сферический коллайдер на объект, который хотите стать центром тяжести. Коллайдер должен охватывать всю область, где вы хотите, чтобы объекты подвергались воздействию силы тяжести этого объекта. Всякий раз, когда объект сталкивается с этой «сферой влияния», вы применяете к нему силу. Вы продолжаете применять силу к ней, пока она находится внутри сферы влияния.
Используемая вами гравитационная постоянная может быть изменена вами, но стандартная, используемая для расчетов в реальном мире:
F = Gm1m2 / r2
Прописано вот что:
Сила = гравитационная постоянная * масса объекта 1 * масса объекта 2 / расстояние между двумя объектами в квадрате.
Обратите внимание, что гравитационная постоянная не 9,81. Это ускорение, вызванное гравитацией на поверхности земли.
Имейте планету / большую сферу с круговым коллайдером, дайте это ребенку. Теперь планета должна быть помечена как планета или статический космический объект, а ребенок должен быть помечен как зона влияния. Теперь маленький объект должен иметь твердое тело и сферу с isTrigger.
Поместите сценарий на планете с помощью триггера на вход / вход, если это сфера влияния, его следует потянуть к этому.
Иначе вы можете сделать это наоборот. Но в любом случае это, вероятно, будет лучше, так как вы, скорее всего, хотите, чтобы гравитационное притяжение отличалось от планеты к планете.
источник
Как говорили другие, гравитация на единстве направлена только в определенном направлении, поэтому, возможно, вам следует вместо этого полностью отключить гравитацию и указать силу, которая перемещает маленькую сферу к огромной.
источник