В один прекрасный день вам захочется перенести физическое тело в новые координаты.
В этой статье попробую подсветить основные моменты связанные с этой задачей.
Создаем сцену, добавляем пару статиков (staticbody2d) и один ригид (rigidbody2d).
Сразу включаем отображение шейпов
Сцена:
Я еще отдельно «замапил» клик мышкой
Заглянув в документацию мы можем увидеть несколько очень важных замечаний :
Все они сводятся к тому , что вы можете передавать новые координаты физическому телу, но делать это напрямую не рекомендуется так как это может привести к ошибкам.
Если вам необходимо воздействовать на позиции, или какие-то иные свойства, то лучше делать это в _integrate_forces() методе.
Заглянем в описание метода :
Тут опять же упоминается то, что если мы хотим менять позиции или какие то другие свойства объекта то это лучше делать тут.
И вот тут кроется самое важное :
Если вам нужно менять свойства объекта непосредственно в физической симуляции - то используем _integrate_forces() .
Если вам нужно модифицировать свойства объекта вне физической симуляции , то мы можем просто «заморозить» (freeze) объект на время, и потом «разморозить»
Свойство Freeze отключает воздействие гравитации и всяких сил, и по сути объект становится статичным телом. ( в документации указано, что если вам нужно именно статичное тело, то лучше использовать StaticBody2D).
Погнали кодить.
Скрипт вешаем на любую ноду, я подвесил на корневую сцены.
В инпуте переведим ригид во Freeze состояние.
Далее в physics_process мы указываем для transform.origin координаты курсора.
И это всё.
Результат:
На этом пожалуй всё.
Подписывайтесь на канал, вступайте в группу в ВК, и не забывайте что у нас есть дискорд сервер.
Удачи в изучении годо !